error
Contents
Effective Error Handling in Golang - Earthly Blog - https://earthly.dev/blog/golang-errors/ Golang Error Handling — Best Practice in 2020 | by Che Dan | ITNEXT - https://itnext.io/golang-error-handling-best-practice-a36f47b0b94c
error handle
how go handle error:
|
|
erorr in go:
- 只包含简单的错误信息,
- 捕获: 通过 if 判断, 一个一个处理
error in another language:
- 包含堆栈信息,错误信息
- 捕获: 通过try…catch,批量处理
why go different with other language:
- try..catch批量处理可能产生bug
|
|
- go 鼓励开发者面对每个error,解决每个错误,越简单越明确越不容易产生bug
什么是好的 错误信息机制 :
- 及时明确: 发现错误,立即处理
- 错误信息越丰富越好
- 能识别不同错误类型,做不同的处理
the error problem in go:
- 无法获得完整调用链路: 使用
fmt.Errorf("some thing error %v",errr)
- 每一层都加信息,至少添加function名, 完整链路
- 层级较深的调用, 在上层需要根据底层错误做不同响应: 使用
- 过多重复的处理,如每次error 都 print. 解决: 重复 的log 就在顶层做统一处理
wrap
wrap: 在丰富错误信息的可以保留原始的error, 从而获取完整调用链路
|
|