Go语言利用返回值来强制大家进行错误处理要么使用 “_” 忽略错误,要么就老老实实处理返回的错误进行错误处理
error接口
error是一个go内置的接口(我们可以通过自定义error来使用)
type error interface{
Error() string
}//这是官方定义
//error接口只有一个Error()方法
(错误内置接口类型是一个常规接口,用来表示错误条件,默认零值为nil,nil值表示没有错误,所以一般使用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的这种错误模型让我们的程序设计更加的轻易、简便。