Go语言实现错误(Error)的方式为:
一、错误接口
Go语言内建了error
接口定义:
type error interface {
Error() string
}
只要实现Error()
方法,就实现了error
接口。
二、内置错误
Go语言提供了几个内置的错误类型:
- errors.New – 创建一个具体的错误
- fmt.Errorf – 根据格式创建一个错误
例如:
errors.New("this is an error")
fmt.Errorf("file not found: %s", filename)
三、自定义错误
也可以定义一个自定义错误类型:
type MyError struct {
Msg string
}
func (e *MyError) Error() string {
return fmt.Sprintf("my error: %s", e.Msg)
}
然后直接返回:
return &MyError{"something wrong"}
四、错误处理
可以使用if err != nil
来处理错误。
if err != nil {
fmt.Println(err)
}
或者通过switch
区分不同错误类型。
switch err.(type) {
case *MyError:
// ...
}
总的来说,Go语言实现错误的方式为:
- 定义 Error 接口
- 提供内置错误类型
- 自定义错误类型 – 实现 Error() 方法
- 通过 if err != nil 或者 switch 区分错误类型
这种做法的优点在于错误具备良好的扩展性。