1、Go的错误机制
- 没有异常机制
- error 类型实现了error接口
- 可以通过error.New来快速创建错误实例
- 在处理错误或者调用函数接收错误的时候,要避免嵌套,要从及早失败的角度编写代码,让代码更清晰
2、panic和recover
- panic用于不可以恢复的错误
- panic退出前会执行defer指定的内容
3、panic vs os.Exit
- os.Exit退出时不会调用defer指定的函数
- os.Exit退出时不输出当前调用栈信息
4、recover使用注意
- 当心形成僵尸服务进程,导致health check失效
- “let it crash”往往是我们回复不确定性错误的最好方法