15.1 error 接口

如果 Go 函数或方法遇到它无法处理的错误或特殊情况,它应该向调用者返回某种错误指示。

如果调用者具有足够的上下文信息,则可能会处理该错误。或者,它也可以决定将错误指示返回到自己的调用者,通过调用链传递。按照惯例,Go 函数通常将错误作为其返回值之一返回,通常是最后一个返回值。

Go 语言包含一个预声明的 error 接口类型:

type error interface {
    Error() string
}

虽然不是必需的,但通常有一个好习惯,就是使用这种常见的接口来表示错误条件。在这种约定中,nil错误值表示没有错误。当返回非nil错误时,通常会忽略正常返回值。当发生错误时,函数应该返回正常返回类型的零值。

例如,读取文件的函数可能会被声明如下:

func Read(f *File, b []byte) (n int, err error) {
    // 省略具体代码
}

当返回非nil err时,表示意外/异常情况,应忽略正常返回值n,它可能为0。在这种情况下,err值将描述出了什么问题,可以对其进行检查,例如使用error.Error方法。

最后更新于