error处理姿势
[TOC]
总结
对于
(value, err)
形式的返回,err != nil
的时候,value才有意义错误只应该被处理一次。错误要记入日志。
error包需要注意
自己的应用程序中,使用
errors.New
或者errors.Errorf
返回错误调用其他包内的函数或者是当前项目里的其他函数,直接
return nil
即可如果使用的是第三方库或者是go的基础库,这个时候应该使用
github.com/pkg/errors
包的Wrap
或者Warpf
保存堆栈信息,同时添加自定义的上下文信息。直接返回错误,在程序工作入口使用
%+v
记录堆栈详情。使用
errors
包的Unwrap
方法获取根因错误来和自定义错误进行等值判断。或者使用Is
函数将错误与值进行比较;使用As
测试错误是否为特定类型一旦错误被处理,包括你打印日志,或者降级处理等,这个时候你就不应该再向上抛出err,而应该return nil。
使用Is和As检查错误
Go 1.13的errors包中包括了两个用于检查错误的新函数:Is和As。
Is函数将错误与值进行比较。
As函数用于测试错误是否为特定类型。
参考
最后更新于
这有帮助吗?