对于调用三方库获取的报错,一般将额外信息(比如调用参数,上下文信息等方便定位问题的信息)包装之后向上层调用方直接抛出: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方法,根据错误类型进行不同的错误处理逻辑 。这样的好处是,对于全局而言,有且只有最外层一份错误日志,而这个错误信息时包装了层层调用信息的,内容最为齐全 。
推荐阅读
-
-
-
-
林洁儿ashely|看看韩国女明星这些方法,值得一试吗?,女明星减肥总是有奇招
-
汪涵发声明道歉|汪涵发声明道歉:将积极和大家一起跟进
-
咖妃说娱乐1|为啥在其他地方没有卖?内行人说出其猫腻,理发店用的洗发水
-
-
我就是个码字的TB:《一个馒头引发的血案》和《无极》的话题还没结束,十五年了
-
-
丹书战史:为何战后不继续生产?设计上有很大缺陷,黑豹被称为二战最好坦克
-
奥利齐|刘备是否真是伪君子,从这两件事就能看出!,在三国历史之中
-
小莉说历史|东帝汶可以独立,锡金为何不行?,同样被大国吞并
-
西班牙■辽宁新增1例境外输入病例:患者由西班牙乘机返回
-
「BaBa很忙」听听李玫瑾建议:家长越''舍得''3件事,孩子越有本事,养育男孩
-
-
-
爱美食的彭鱼宴吃肯德基时,餐盘上的垫纸是干什么的?原来这么多年都错了
-
|辟谣:常吃降压药会引起低血压?医生:所有的低血压都有原因
-
荣耀|不忘初心方得始终 八年诚意之作荣耀X30来了:参数不是神话
-
美剧|30亿打造史上最贵美剧!《指环王》9月2日开播:剧情黑暗