error
//零值为nil 引用类型
零值为无错误
有值为包含错误
//error接口
type error interface {
Error() string
}
//errors
func New(text sring) error
//fmt
func Errorf(format string,a ...interface{}) error
使用规约
- error建议放在返回最后面
- 多次重试可避免失败,不必立即返回error
- 多次嵌套,建议给出error错误位置信息
panic
//内建函数
func panic(v interface{})
使用规约
- panic会停止当前goroutine执行
- panic位置即刻停止,执行所有经过的defer,知道最外层goroutine。
- panic信息会向上传递
recover
//内建函数
func recover() interface{}
//使用例子
func test (){
defer func(){
if err:=recover();err!=nil{
fmt.Println(err)
}
}
panic("test panic")
}
使用规约
- 通常处理意料之外的异常,和defer一起使用管理panic过程。
- 如果没有panic或者panic为nil,则recover返回nil