对于调用三方库获取的报错,一般将额外信息(比如调用参数,上下文信息等方便定位问题的信息)包装之后向上层调用方直接抛出: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方法,根据错误类型进行不同的错误处理逻辑 。这样的好处是,对于全局而言,有且只有最外层一份错误日志,而这个错误信息时包装了层层调用信息的,内容最为齐全 。
推荐阅读
-
-
-
智能家居华为智能家居领域动作曝光,申请MateHome商标
-
-
国际肝病|Eur J Gastroenterol Hepatol:OCA和UDCA联合治疗对UDCA应答不完全的PBC患者的系统评价
-
青年|马泳:八一李易峰这称号不敢当,立志在球场上报效国家
-
-
周到|司机南浦大桥驾车不系安全带被电子警察抓拍:记2分,罚100元!
-
【国务院国有资产监督管理委员会|央企互联网平台筑就转型升级新势能】
-
『汽车行情之家』M”商标,或定位全新旗舰SUV,轿跑式外形设计,宝马申请注册“X8
-
中国新闻网|部分疫苗未冷链运输 韩国暂停流感疫苗免费接种项目
-
#地下城与勇士#DNF:玩游戏日常迷惑行为。高昂!疯狂!
-
新华网|商务部部长钟山:降低疫情影响 稳定亚太区域贸易投资
-
-
国防时报军情|飞行员跳伞逃生,又曝事故!美军F-35B与KC-130J意外碰撞后坠毁
-
-
-
青年|官方公布攻击最高的英雄,不是猴子,不是铠,而是下水道的他!
-
新机发布|小米也要开机海战术,10款小米新机曝光,你想要的统统都有
-