码迷,mamicode.com
首页 > 其他好文 > 详细

error、panic、recover、panicking

时间:2019-08-21 20:05:33      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:c中   func   sage   square   roo   异常   使用   自定义   over   

错误处理:
当程序处于错误状态可以用os.Exit(1)来中止运行
自定义错误:
err := errors.New("I am error")
用fmt创建错误(和print一个样,它会创建一个自定义error,字符串就是格式化后的字符串)
fmt.Errorf("math: square root of negative number %g", f)

运行时异常与panic

当发生运行时错误时,Go会触发运行时panic(例如数组下标越界)

panic也可以从代码中初始化
panic(MessageString)


从panic中恢复(Recover)
recover(接受panic并处理)
recover(内建函数)被用于从panic中恢复,让程序从panicking中重新获得控制权。
(panicking,程序执行panic之后的状态)
recover只能再defer修饰的函数中使用,用来取得panic传递过来的错误值。
如果正常执行,recover会返回nil。
func main() {
defer func(){
goodWay := recover()//recover接收了panic,并返回panic 的信息。
fmt.Println(goodWay)
}()
panic("I am Panic" )
}

自定义包中的错误处理(遵守准则):
1>在包内部,panic到recover的范围不允许显示的超出包范围。
2>向包的调用者返回的只能是error而不是panic。

error、panic、recover、panicking

标签:c中   func   sage   square   roo   异常   使用   自定义   over   

原文地址:https://www.cnblogs.com/mcmx/p/11390877.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!