对于调用三方库获取的报错,一般将额外信息(比如调用参数,上下文信息等方便定位问题的信息)包装之后向上层调用方直接抛出: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方法,根据错误类型进行不同的错误处理逻辑 。这样的好处是,对于全局而言,有且只有最外层一份错误日志,而这个错误信息时包装了层层调用信息的,内容最为齐全 。
推荐阅读
-
-
-
猪大猫数码 2498元起!提前打响“618之战”,骁龙865机型齐降价
-
-
暗夜时尚|时尚穿搭:穿旗袍的美女,试问,有谁不喜欢
-
-
我们的太空■记住援鄂英雄面孔,见证!42000多张照片
-
-
「线路长约」重磅!2021-2026年南宁新规划10条地铁线路图曝光
-
新华国际头条|特朗普竞选广告错用俄军战机 原图作者:这就是插手美国政治?
-
生科医学|云南新增3例本土确诊2例无症状:瑞丽一地升为中风险
-
-
德国确诊逼近二十万 新冠预警APP上线半月上报约三百例
-
三星|发布才2个月,三星从7399元降到4999,力拼Mate40!
-
央视新闻客户端|美国多地再现非洲裔遭警察暴力执法事件
-
公司|“一场乌龙”背后,豆瓣二号人物浮出水面,曾任职于最高人民法院
-
『两性大讲堂』前列腺的6大“守护神”,感谢你多吃“它们”
-
大众全新CC到店实拍!搭2.0T+8AT,还配4Motion四驱 比奥迪A4还香
-
菊花|老药师落泪了!降血压老方子,屡用屡效,却不招人稀罕,该反思了
-
圆桌笔尖|你爹台面下跑前跑后,这生活,小说:你娘台面上风光无限