对于调用三方库获取的报错,一般将额外信息(比如调用参数,上下文信息等方便定位问题的信息)包装之后向上层调用方直接抛出:if _,err:=ioutil.ReadAll(r);err!=nil{return fmt.Errorf("read file failed:%w", err)}// 调用方if err!=nil{if errors.Is(err, io.EOF){...}}关于错误日志的处理部分,为了防止处处打日志造成的上下文信息分散和大量信息冗余,一般建议的处理方式是对于内部方法的调用,使用%w包装错误和必要的额外信息,直接返回到上层;对于最外层方法(一般是http handler或者rpc handler),将错误包装上下文,打印到错误日志中,再使用errors.Is或者errors.As方法,根据错误类型进行不同的错误处理逻辑 。这样的好处是,对于全局而言,有且只有最外层一份错误日志,而这个错误信息时包装了层层调用信息的,内容最为齐全 。
推荐阅读
-
-
[聊科技焦点]刀头充电电池早已批量生产,三元锂电池将被结束?byd使出皇牌
-
-
星轨的蓝色眼泪|最大度的星座,快乐留给别人,悲伤留给自己,最宽容
-
标的|比音勒芬终止收购上海微祥 此前标的估值4亿引争议
-
|国家统计局:7月猪肉价格上涨85.7% 鲜果下降27.7%
-
「亚鲁紫云」县委常委会(扩大)会议暨县扶贫开发领导小组第59次会议召开
-
-
中国新闻网|8天假期参加23场婚宴?这是遇到“报复性结婚”了吗?
-
-
智能家居科技|谷歌大改Transformer注意力,自己挖坑自己填
-
核桃|小金蟾手串为何备受青睐,具体盘玩需要注意些什么
-
-
对于老公要出去喝酒应酬,一人在家带小孩的老婆应该拿啥心态生活?
-
-
西装|原创杨洋活动生图曝光,穿西装马甲笑容温暖,被赞宛如贵公子
-
中年|Hero“哲之BP”首局击败AG“光之BP”!阿泰指出问题!
-
电炖锅预约功能怎么用视频教程 电炖锅预约功能怎么用
-
老人|为什么大多数人老了以后会变矮?"罪魁祸首"终于找到了
-
可乐加洗洁精有什么用 可乐加洗洁精有什么用能去油污吗