更新:我认为现在这个问题没有普遍的答案。我们可以使用答案中解释的技术返回这两个错误。我认为这里最重要的是不要忘记当我们有两个错误时的情况并以某种方式处理它。
注意:SO上有很多关于如何从延迟函数返回错误的问题。这不是这里的问题。
(在 Go 中)当函数已经返回错误时,从延迟函数返回错误的正确方法是什么。例如_
func errorMaker() (err error) {
defer func() {
err = errors.New("Deferred error")
}()
err = errors.New("Some error")
return
}
func main() {
err := errorMaker()
fmt.Printf("Error: %v\n", err)
}
在上面的代码中,延迟函数返回的错误会覆盖该函数返回的错误。返回这两个错误的规范方法是什么?如果另一个程序员使用我的函数,当函数返回“两个错误”时,她期望从函数中得到什么结果?
我应该为此使用错误包装吗?
茅侃侃
相关分类