我一直在阅读 this blog post但我仍然不相信我确切地知道该怎么做才能获得我可以从我的函数返回并在它们之外处理的自定义错误。
这是我目前正在做的:
func doSomething() int {
x := 0
// Do something with x.
...
if somethingBadHappened {
return -1
}
if somethingElseBadHappened {
return -2
}
return x
}
这就是我想做的:
func doSomething() int, ? {
...
if somethingBadHappened {
return ?, err
}
if somethingElseBadHappened {
return ?, err2
}
return x, nil
}
但我不确定如何以及用什么替换这些问号。
最佳答案
如果你不想的话,你真的不需要返回一个整数。你可以这样做:
func doSomething() error {
...
if somethingBadHappened {
return errors.New("something bad happened")
}
if somethingElseBadHappened {
return errors.New("something else bad happened")
}
return nil
}
或者如果你想返回整数
func doSomething() (int, error) {
...
if somethingBadHappened {
return -1, errors.New("something bad happened")
}
if somethingElseBadHappened {
return -2, errors.New("something else bad happened")
}
return x, nil
}
一定要在顶部import "errors"
。
如果你想测试你是否得到错误,你可以这样做
x, err := doSomething()
if err != nil {
log.Println(err)
}
关于error-handling - Go 中的自定义错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462074/