对于调用三方库获取的报错,一般将额外信息(比如调用参数,上下文信息等方便定位问题的信息)包装之后向上层调用方直接抛出: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方法,根据错误类型进行不同的错误处理逻辑 。这样的好处是,对于全局而言,有且只有最外层一份错误日志,而这个错误信息时包装了层层调用信息的,内容最为齐全 。
推荐阅读
-
侃聊天天地|若TA全说过,恭喜你荣升备胎王者!,这“3个字”比呵呵冷漠1W倍
-
教育圈|毕业证如同废纸,考生要警惕,人民日报最新公布广东12所野鸡大学
-
华为Mate系顶级旗舰价格大放水,128G+徕卡三摄,六折出售
-
-
胖次资讯|硬糖少女集体秀“生图”,郑乃馨最美,希林似油画,看到赵粤该减肥了
-
-
-
-
鼎盛军事|战略轰炸机飞行7000公里逼近美国本土,起飞就能攻击,俄放一大招
-
-
-
-
秦霄贤妈妈被银行告上法院|娱乐圈家长到底都怎么了!秦霄贤妈妈被银行告上法院
-
烽火营|多次绕岛飞行巡航,俄罗斯:保持高度警惕,美日大批战机共同行动
-
明星八卦|《以家人之名》唐灿可爱圈粉,这是《鬓边》中怯懦却可恨的她
-
全国能源信息平台|经营性租赁模式在综合能源服务项目中的应用
-
助手哈说|不会有人知道这是什么动物哈哈哈简直刷新我的认知,我赌两包烟
-
我的思念漫天|车内只听到一些胎噪和风噪而已,哈弗H6提车作业:跑高速时
-
咖啡茶和什么称世界三大饮料 世界3大饮料咖啡茶可可
-