Structured Errors in Go
a year ago
- #Error Handling
- #Go
- #Structured Logging
- Go语言的错误处理基于返回值机制,任何实现了error接口的类型都被视为错误。
- 结构化日志对于诊断大中型系统问题至关重要,但Go现有的错误处理机制难以支持结构化元数据。
- 自定义错误类型可以包含元数据,但创建过程繁琐且不符合人体工学,导致使用方式不一致。
- 作者提出了一种受Logrus等结构化日志库启发的解决方案,允许用元数据字段包装错误。
- Go中的Context可用于沿调用树向下传递元数据,这些元数据随后可在错误向上传递时附加到错误上,从而弥合上下文与错误处理之间的鸿沟。
- 引入名为'fault'的库,通过元数据实现结构化错误处理,使生产环境问题诊断更加便捷。