Go package——errors篇

golang关于error处理的标准包

整理一下Go中errors包中的函数,涉及的函数还是比较少的

Go 版本: 1.19.2

Errors函数

Error创建

1
2
3
4
5
6
7
8
func New(text string) error {
	return &errorString{text}
}

// errorString is a trivial implementation of error.
type errorString struct {
	s string
}

New函数输入字符串,创建新的error

Error返回String

1
2
3
func (e *errorString) Error() string {
	return e.s
}

Error函数返回错误的string类型信息

Error判断

1
2
func Is(err, target error) bool
func As(err error, target any) bool

Is函数回报err链中是否与target匹配

Astarget一个实现了 error 接口的指针 ,用于自定的动态错误

例如定义一个error类型:

1
2
3
4
5
6
7
8
type ErrInvalidParam struct {
    ParamName  string
    ParamValue string
}

func (e *ErrInvalidParam) Error() string {
    return fmt.Sprintf("invalid param: %+v, value: %+v", e.ParamName, e.ParamValue)
}

使用As函数解析:

1
2
3
4
var e *ErrInvalidParam
if errors.As(err, &e) {
	//..
}

Error解包

1
func Unwrap(err error) error

Unwrap函数对error进行解包,返回上一层错误

参考

Go error 处理的四种方式 - 知乎

Licensed under CC BY-NC-SA 4.0