Go语言学习06-错误处理
Go语言学习06-错误处理
Go的错误机制
与其他主要编程语言的差异没有异常机制
error
类型实现了error接口可以通过 errors.New 来快速创建错误实例
1
2
3
4
5type error interface {
Error() string
}
errors.New("n must be in range [0, 10]")
最佳实践
定义不同的错误变量, 以便于判断错误类型1 | var LessThanTwoError = errors.New("n should be not less than 2") |
panic
- panic 用于不可恢复的错误
- panic 退出前会执行 defer 指定的内容
panic vs. os.Exit
- os.Exit 退出时不会调用 defer 指定的函数
- os.Exit 退出时不输出当前调用栈信息
recover
1 | // 最常见的"错误恢复" |
缺陷:
- 形成僵尸服务进程, 导致 health check 失效
- “Let it Crash!” 往往是我们恢复不确定性错误的最好方法
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 技术匝记簿!
评论