第13章 错误处理及检测 20180629
go认为java和.net的try catch finally 那一套太损耗性能,所以函数返回时一般含有错误参数
error 是一个预定义的接口,只需要实现Error()函数即可
type error interface {
Error() string
}
引用errors包,新增一个error只需要errors.New(error_string)
可以自定义error类型以获取必要的信息
可以用switch语句对错误类型进行判断,以做出正确的决定
switch err := err.(type) {
case ErrorType1:
process1()
case ErrorType2:
process2()
default:
blablabla()
}
if e, ok := err.(*os.PathError) ; ok {
process()
}
使用fmt构造错误对象
使用fmt.Errorf() 方法
if f < 0 {
return 0 , fmt.Errorf("math : square root of negative number %g",f)
}
panic 的使用
panic用于比较严重的错误,在错误不可修复的情况产生一个runtime.error来阻止程序的继续执行
go panicking : 如果panic发生在嵌套的函数调用过程中,它会立即停止当前函数的执行,所有的defer函数将保证执行完毕,程序的控制前递交给函数的调用方
Recover