0
点赞
收藏
分享

微信扫一扫

golang之errors包

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是否为指定类型

 



举报

相关推荐

0 条评论