Error | 青训营笔记

42 阅读2分钟

Go语言利用返回值来强制大家进行错误处理要么使用 “_” 忽略错误,要么就老老实实处理返回的错误进行错误处理

error接口


 error是一个go内置的接口(我们可以通过自定义error来使用)
 
 type error interface{
        Error() string
 }//这是官方定义
  //error接口只有一个Error()方法
 (错误内置接口类型是一个常规接口,用来表示错误条件,默认零值为nilnil值表示没有错误,所以一般使用if语句
    if err != nil {} 来判断是否有错误1)
 
 Error方法返回的是一个描述错误信息的字符串
 (注:当我们使用fmt包来打印错误的时候,会自动调用Error方法,相当于会自动打印错误的描述信息)
 
 我们自定义error的最简单的方式就是利用errors包的New函数来创建错误(errors.New)  
 :
 func New(text string) error //接受字符串参数并返回它的错误
 1.可用来定义错误变量:
 var EOF = errors.New("EOF"2.可以用在函数返回时快速创建一个错误
 func errl(i int)(string,error){
      if i<0{
         return nil,errors.New("i是个负数!!")
      }
 }
 
 当我们需要传入格式化的错误描述信息时往往使用fmt.Errorf
 fmt.Errorf("查询失败, err:%w",err)//如果使用%v会有可能丢失原来的错误类型,推荐使用特殊的格式化动词%w,这样可以基于已有的错误再包装得到一个新的错误
 

go的错误处理不像其他语言一样,也不支持try/catch语句模型,它让错误变成像普通函数的返回值一样,这让我们可以像对待普通函数一样对待错误,go的这种错误模型让我们的程序设计更加的轻易、简便。