Go error

本文最后更新于:2 年前

panic or error

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

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!