错误处理

在 Go 中,错误就是价值;它们由代码创造,也由代码消耗。错误可以是:

  • 转化为诊断信息,显示给程序员看
  • 由维护者使用
  • 向终端用户解释

错误信息也显示在各种不同的渠道,包括日志信息、错误转储和渲染的 UI。

处理(产生或消耗)错误的代码应该刻意这样做。忽略或盲目地传播错误的返回值可能是很诱人的。然而,值得注意的是,调用框架中的当前函数是否被定位为最有效地处理该错误。这是一个很大的话题,很难给出明确的建议。请使用你自己的判断,但要记住以下的考虑。

  • 当创建一个错误值时,决定是否给它任何结构。
  • 当处理一个错误时,考虑添加信息,这些信息你有,但调用者和/或被调用者可能没有。
  • 也请参见关于错误记录的指导。

虽然忽略一个错误通常是不合适的,但一个合理的例外是在协调相关操作时,通常只有第一个错误是有用的。包errgroup为一组操作提供了一个方便的抽象,这些操作都可以作为一个组失败或被取消。

也请参见: