Golang error 处理最佳实践

golang error 处理最佳实践 错误类型定义 Go 中error 类型是一个接口类型 1 2 3 type error interface { Error() string } 基本上,error 是实现该接口任何内容,它将错误消息作为字符串返回。 构造错误 ​ 可以使用 Go 的内置或包动态构造错误。 ​ 例如,以下函数使用包返回带有静态错误消息的新错误:errors fmt errors 1 2 3 4 5 6 7 package main import "errors" func DoSomething() error { return errors.New("something didn't work") } ​ 同样,该包可用于向错误添加动态数据。 ​ 例如:fmt int string error 1 2 3 4 5 6 7 8 9 10 package main import "fmt" func Divide(a, b int) (int, error) { if b == 0 { return 0, fmt.Errorf("can't divide '%d' by zero", a) } return a / b, nil } 请注意,当用于用格式动词包装另一个错误时,这将非常有用 fmt.Errorf %w 在上面的示例中,还有其他一些重要事项需要注意。 错误可以返回为nil ,它是 Go 中 error 的默认值或零值。这很重要,因为检查是确定是否遇到错误的惯用方法(替换您可能在其他编程语言中熟悉的 / 语句)。if err != nil 错误通常作为函数中的最后一个参数返回。因此,在上面的示例中,我们按该顺序返回 int和 nil 。 当我们返回错误时,函数返回的其他参数通常作为其默认的零值返回。函数的用户可能期望,如果返回非nil 错误,则返回的其他参数不相关。 最后,错误消息通常以小写形式编写,不以标点符号结尾。但是可以例外,例如,当包含专有名词,以大写字母开头的函数名称等。 ...

9 min · 4119 words · Luenci