我一直在阅读这篇博文,但我仍然不相信我确切地知道该怎么做以获得自定义错误,我可以从我的函数返回并处理它们之外的错误.
这就是我目前正在做的事情:
func doSomething() int {
x := 0
// Do something with x.
...
if somethingBadHappened {
return -1
}
if somethingElseBadHappened {
return -2
}
return x
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的事情:
func doSomething() int, ? {
...
if somethingBadHappened {
return ?, err
}
if somethingElseBadHappened {
return ?, err2
}
return x, nil
}
Run Code Online (Sandbox Code Playgroud)
但我不确定如何以及如何用这些问题取代这些问号.
小智 8
如果你不想,你真的不需要返回一个int.你可以这样做:
func doSomething() error {
...
if somethingBadHappened {
return errors.New("something bad happened")
}
if somethingElseBadHappened {
return errors.New("something else bad happened")
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
或者如果你想返回整数
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
}
Run Code Online (Sandbox Code Playgroud)
一定要import "errors"在顶部.
如果你想测试是否有错误,你可以做
x, err := doSomething()
if err != nil {
log.Println(err)
}
Run Code Online (Sandbox Code Playgroud)