errors包常用方法
func Unwrap(err error) error // 获得err包含下一层错误
func Is(err, target error) bool // 判断err是否包含target
func As(err error, target interface{}) bool // 判断err是否为target类型
自定义错误信息
errors.New("这是自定义错误")
# 使用fmt进行错误包装
fmt.Errorf("error: %w", err)
errors.Is()
作用:判断被包装过的error是否包含指定错误
var BaseErr = errors.New("base error")
func main() {
err1 := fmt.Errorf("wrap base: %w", BaseErr)
err2 := fmt.Errorf("wrap err1: %w", err1)
println(err2 == BaseErr)
if !errors.Is(err2, BaseErr) { // err2错误 是否在BaseErr错误树中
panic("err2 is not BaseErr")
}
println("err2 is BaseErr")
}
//输出:
//false
//err2 is BaseErr
errors.As()
作用:判断被包装过的error是否为指定类型