Go error
本文最后更新于:2 年前
panic or error
- 在 Go 中 panic 会导致程序直接退出,是一个致命的错误,如果使用 panic recover 进行处理的话,会存在很多问题
- 性能问题,频繁 panic recover 性能不好
- 容易导致程序异常退出,只要有一个地方没有处理到就会导致程序进程整个退出
- 不可控,一旦 panic 就将处理逻辑移交给了外部,我们并不能预设外部包一定会进行处理
- 什么时候使用 panic 呢?
- 对于真正意外的情况,那些表示不可恢复的程序错误,例如索引越界、不可恢复的环境问题、栈溢出,我们才使用 panic
- 使用 error 处理有哪些好处?
- 简单。
- 考虑失败,而不是成功(Plan for failure, not success)。
- 没有隐藏的控制流。
- 完全交给你来控制 error。
- Error are values。
- 在程序启动的时候,如果有强依赖的服务出现故障时
panic
退出 - 在程序启动的时候,如果发现有配置明显不符合要求, 可以
panic
退出(防御编程) - 其他情况下只要不是不可恢复的程序错误,都不应该直接
panic
应该返回error
- 在程序入口处,例如
gin
中间件需要使用recover
预防panic
程序退出
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!