整理一下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
匹配
As
中target
为 一个实现了 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 处理的四种方式 - 知乎