2 回答
TA贡献1789条经验 获得超10个赞
我假设您正在谈论与.DoRequest() errorDoRequest() net.SomeSpecificError
以下代码
type CustomError struct {
}
func (CustomError) Error() string {
return "custom error"
}
func DoRequest() *CustomError {
return nil
}
func MarkTaskComplete() error {
return nil
}
func main() {
err := DoRequest()
if err != nil {
log.Fatal(err)
}
err = MarkTaskComplete()
if err != nil {
log.Fatal(err)
}
}
将无法编译,因为返回的错误无法分配给类型为 的 err 变量。MarkTaskComplete*SomeError
第二个缺点是,您不能从 除 以外的任何其他错误返回。在某些情况下,您可能会从此类限制中受益,但在大多数情况下,这种方法更灵活。特别是当您的函数调用另一个函数时。DoRequestSomeErrorerror
关于错误包装也值得一读
TA贡献2003条经验 获得超2个赞
客户类型的好处,即净。错误是:
type Error interface {
error
Timeout() bool // Is the error a timeout?
Temporary() bool // Is the error temporary?
}
上述内容的优点是更具描述性。我们将获取有关错误的更多信息,例如它是超时错误还是临时错误。
除此之外,我们还了解了主要字段“error”中的主要数据,在上面的示例中,这是一个字符串。
type error interface {
Error() string
}
- 2 回答
- 0 关注
- 103 浏览
添加回答
举报