错误处理
error接口
golang中定义了错误接口error,其中包含了错误方法Error() string,可以通过内置包errors中的NewError()方法创建一个错误
例子:引发一个错误
package main
import (
"errors"
"fmt"
)
func main() {
// 调用一个会返回错误的方法,判断err是否为空,非空则输出错误
if err := BadFunc(); err != nil {
fmt.Println(err)
} else {
fmt.Println("everything is fine")
}
}
func BadFunc() error {
// 通过errors.New()方法创建并返回一个错误
return errors.New("a bad error")
}以上代码的执行结果:
自定义错误
只要实现了Error() string方法,就可以做为错误接口的传递参数,引发自定义的错误
例子:自定义错误
以上代码的执行结果:
例子:错误类型推断
以上代码的执行结果:
panic
除了通过error接口报普通错误外,在一些比较严重的场合可以用内置的panic()方法引发一个运行时错误,运行时错误会在方法中逐层往上传递,直到去到main()方法中,引起程序的错误退出
引发错误
例子:引发panic错误
以上代码的运行结果:
错误处理
在一些代码库中,发送严重错误后会引发panic()导致程序退出,当已经有办法处理这个错误时,我们不希望程序退出而是将其做为普通错误处理,这时就需要能够拦截panic()错误的传递。可以通过内置的recover()方法结合延迟执行defer,实现对于panic()的错误处理
例子:错误处理
以上代码运行结果:
最后更新于