首页 > 后端开发 > Golang > Go 中处理错误的最佳实践是什么?

Go 中处理错误的最佳实践是什么?

Linda Hamilton
发布: 2024-12-31 05:28:13
原创
1022 人浏览过

What are the Best Practices for Handling Errors in Go?

Go 中的标准错误处理程序

Go 有几种惯用的错误处理方法:

1.修复了错误变量

var (
    ErrSomethingBad = errors.New("some string")
    ErrKindFoo      = errors.New("foo happened")
)
登录后复制

2.错误类型

type SomeError struct {
    ExtraInfo int
}
func (e SomeError) Error() string { /* … */ }
登录后复制

3.特别错误

func SomepackageFunction() error {
    return errors.New("not implemented")
}
登录后复制

4.标准库错误

func SomeFunc() error {
    return io.EOF
}
登录后复制

5。错误接口

type Error interface {
    error
    Timeout() bool
    Temporary() bool
}
登录后复制

6.换行错误 (Go 1.13 )

func SomepackageFunction() error {
    err := somethingThatCanFail()
    if err != nil {
        return fmt.Errorf("some context: %w", err)
    }
}
登录后复制

选择正确的方法

首选方法是:

  • 修复错误用户可能想要测试的错误的变量或错误类型具体来说。
  • 临时错误或不太可能测试的小错误的标准库错误。
  • 具有特定行为或属性的错误的错误接口。
  • 封装的错误向现有错误添加上下文(Go 1.13 ).

优点:

  • 修复错误变量:易于测试和比较。
  • 错误类型:可通过错误的附加信息进行扩展
  • 临时错误:针对小错误进行简洁。
  • 错误接口:强制执行特定的错误行为并促进多态性。
  • 包装错误: 提供上下文而不创建自定义错误类型。

进一步阅读:

  • [有效继续错误](https://go.dev/doc/articles/errors)
  • [Go 博客:错误处理和Go](https://blog.golang.org/error-handling-and-go)
  • [Dave Cheney:检查错误](https://dave.cheney.net/2016/04/07 /检查错误)
  • [Peter Bourgon:使用错误](https://go.dev/blog/errors)

以上是Go 中处理错误的最佳实践是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板