不要在 Go 中返回错误 —— akavel 的数字花园

主要观点:Go 中不应简单地“return err”,而应添加与调试相关的缺失细节。通过在错误处理代码中编写自定义消息,能提供更多调试有用的信息,如os.ReadFile添加文件名,且不依赖代码行号,消息更持久且可独立理解。同时介绍了errors.Iserrors.As用于编程检测错误,还给出了生产代码中复杂错误处理的示例,展示如何添加调试上下文。

关键信息:

  • Go 错误处理的错误模式“return err”是不良的反模式。
  • 通过fmt.Errorf添加详细错误消息,如“mtls: building tls.Config from ClientConfig.CAPath: %w”。
  • errors.Is可用于编程检测“文件未找到”错误。
  • 生产代码中readAndUnpack函数展示了复杂错误处理及添加调试上下文的方式。

重要细节:

  • BuildTLSConfig函数中改进错误处理,添加更详细的错误信息。
  • 生产代码中根据不同错误情况创建自定义错误类型newError
  • 示例代码中对各种错误条件的处理及错误信息的添加。
阅读 10
0 条评论