对于调用三方库获取的报错,一般将额外信息(比如调用参数,上下文信息等方便定位问题的信息)包装之后向上层调用方直接抛出: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方法,根据错误类型进行不同的错误处理逻辑 。这样的好处是,对于全局而言,有且只有最外层一份错误日志,而这个错误信息时包装了层层调用信息的,内容最为齐全 。
推荐阅读
-
-
-
教育资源短板 弥补教育资源短板 北京新学道晋中书院新校区计划年底竣工
-
-
MIUI|MIUI12与EMUI10.1尴尬了,流畅度都不如它
-
饵料|野钓调漂时到底是钓灵还是钓钝?照我说的调,你能钓得盆满钵满
-
科技日日说 11降价900元,重新沦为“市场宠物”,有3个原因!,iPhone
-
野鸡大学|光明时评:“虚假大学”难绝迹,还有解吗?
-
-
-
央广网|四川发布地质灾害气象风险3级黄色预警 影响10个县(市)
-
-
兴人|俗语:“家有四样,家兴人旺”,哪四样?早懂少吃亏!
-
#琳琳说历史#关羽被灭族,张飞家族安然无恙,到底有何区别?,蜀汉灭亡
-
#通城快讯#就业暖民心 南通推出系列惠残政策,春风送真情
-
罗志祥分手风波后首露面|围观吃瓜】罗志祥分手风波后首露面是怎么回事?什么情况?终于真相了
-
梦见衣服被水冲走后又捞起来 梦见衣服被水冲走又捞回来周公解梦
-
-
「新华网」2020年墨西哥华侨华人春节联欢晚会举行
-
『橘子皮』吃橘子扔了皮,这可太浪费了,几个小妙招谁用了都说好