Go最佳实践:异常处理
记录一些go语言error处理的最佳实践
为package定义必要的错误类型
type ErrSomething struct {
message string
}
func (e *ErrZeroDivision) Error() string {
return e.message
}
或者
var ErrSomething = errors.New("Item not found")
这样做的好处是,当方法返回error
时,调用者可以使用 type switch
或者 errors.Is
或者 errors.As
方法来判断错误类型,以分别进行处理。
第三方package的函数返回的错误,立即wrap后再返回,自己编写的函数返回的错误,直接返回
这样做的好处是,当错误发生时,可以立即为错误添加错误发生时的上下文信息,并且可以防止错误重复wrap。