错误指程序中出现不正常的情况,从⽽导致程序⽆法正常执⾏。
error处理概述
- Go语⾔中没有try…catch
- Go 语⾔通过内置的错误类型提供了⾮常简单的错误处理机制;
- 错误值可以存储在变量中,通过函数中返回;
- 如果⼀个函数或⽅法返回⼀个错误,按照惯例,它必须是函数返回的最后⼀个值;
- 处理错误的惯⽤⽅式是将返回的错误与nil进⾏⽐较;
- nil值表示没有发⽣错误,⽽⾮nil值表示出现错误;
- 如果不是nil,需打印输出错误。
error错误类型的本质
- error本质上是⼀个接⼝类型,其中包含⼀个Error()⽅法。
type error interface {
Error() string
} - 任何实现这个接⼝的类型都可以作为⼀个错误使⽤。这个⽅法提供了对Go错误处理——error的描述。
创建error对象的方式
1. errors包下的New()函数返回error对象
- 通过errors.New()创建新的错误。
package errors
// New returns an error that formats as the given text.
func New(text string) error {
return &errorString{text}
}
// errorString is a trivial implementation of error.
type errorString struct {
s string
}
func (e *errorString) Error() string {
return e.s
}
2. fmt包下的Errorf()函数返回error对象
- fmt包下的Errorf()函数本质上还是调⽤errors.New()
// Errorf formats according to a format specifier and returns the string
// as a value that satisfies error.
func Errorf(format string, a ...interface{}) error {
return errors.New(Sprintf(format, a...))
}
3. 创建⼀个自定义错误
实现步骤,如下:
- 1、定义⼀个结构体,表示⾃定义错误的类型;
- 2、让⾃定义错误类型实现error接⼝的⽅法 : Error() string
- 3、定义⼀个返回error的函数。根据程序实际功能⽽定。
案例如下:
//myError.go
效果如下: