对于调用三方库获取的报错,一般将额外信息(比如调用参数,上下文信息等方便定位问题的信息)包装之后向上层调用方直接抛出: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方法,根据错误类型进行不同的错误处理逻辑 。这样的好处是,对于全局而言,有且只有最外层一份错误日志,而这个错误信息时包装了层层调用信息的,内容最为齐全 。
推荐阅读
-
楚汉|汉朝人能吃到火锅吗 最新蚂蚁庄园小课堂11月21日答案
-
-
-
穿甲弹|中美俄穿甲弹对比:美国能穿透800毫米钢板,俄700毫米,中国呢?
-
-
翡翠|山水牌翡翠深受大家喜爱,佩戴能愉悦心情,让自己变乐观
-
炣燃科技■Here WeGo地图上架应用商店,华为找到谷歌替代者
-
南宁@南宁加快西部陆海新通道建设 物流“枢纽”日益凸显
-
苹果|苹果确认双11发布会!提前发布iPhone13?
-
金典有机纯奶和纯牛奶有什么区别 金典有机纯牛奶和纯牛奶的区别甄选
-
-
-
-
星座小艾米横财大旺,有钱有福,富贵无忧的5大生肖,五月十四号开始
-
科技美学|外形轮廓方正,下一代小米MIX?小米真全面屏手机专利曝光
-
她的世界多了些安全感?她的世界让人无法看清爱的是你痛的仍然是你
-
-
中国青年网:飞雪中与黄晓明同框画面唯美,佘诗曼晒片场合照乐趣多
-
郭艾伦|心疼!郭艾伦CBA总决赛咳嗽、干呕严重,与私生活习惯无关
-
[港珠澳大桥]海南又一烧钱工程,成本比港珠澳大桥还要高,网友