对于调用三方库获取的报错,一般将额外信息(比如调用参数,上下文信息等方便定位问题的信息)包装之后向上层调用方直接抛出: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方法,根据错误类型进行不同的错误处理逻辑 。这样的好处是,对于全局而言,有且只有最外层一份错误日志,而这个错误信息时包装了层层调用信息的,内容最为齐全 。
推荐阅读
-
-
-
-
-
快乐男声|昔日快男亚军卑微求职,晒出个人简历,为什么会沦落到这种地步?
-
-
第一电动网|ID.4 内饰官图曝光 或将于 9 月 23 日全球发布,大众
-
卫浴间|卫生间怎么确保通风透气?卫生间装修要注意什么
-
十二星座大宝典|你也搞不定这三大星座女!,用完三十六计
-
陈根,这通常是用3D打印机完成的,然后用一种新的环保添加剂对材料进行剪裁
-
2021年8月份出生的鼠宝宝起名-2021年8月份出生的宝宝五行缺什么
-
-
-
满江红|满嘴谎言!灰太狼的羊否认认识刘伟,19条婚前协议曝光太打脸
-
-
成龙房祖名为什么不同姓 成龙的儿子为什么叫房祖名呢-
-
-
-
120健康网|备孕应该如何补充叶酸?叶酸作用是什么?看完就懂了
-
高考生因系统崩溃错过志愿填报|谁来担责?高考生因系统崩溃错过志愿填报,今年超一本线79分