标签:recover err func error 错误处理 main panic 机制
1、Go中引入的处理方式为:defer,panic,recover
Go中可以抛出一个panic异常,然后在defer中通过recover捕获这个异常。然后正常处理
func test() { defer func() { if err := recover(); err != nil { // recover()内置函数,可以捕获异常 fmt.Println("err=", err) } }() num1 := 10 num2 := 0 res := num1 / num2 fmt.Println("res=", res) } func main() { test() fmt.Println("main下面的代码") }
输出:
err= runtime error: integer divide by zero main下面的代码
2、自定义错误
使用errors.New和panic内置函数
errors.New("错误说明"),会返回一个error值,使用error类型的值,表示一个错误
panic内置函数,接收一个interface{}类型的值(也就是任意值)作为函数,可以接收error类型的变量,输出错误信息,并退出程序
func test(code string) (err error) { if code != "200" { err = errors.New("接口调用失败") } return } func main() { err := test("100") if err != nil { // 如果接口调用失败,就会输出这个错误,并终止程序 panic(err) } fmt.Println("main下面的代码") }
标签:recover,err,func,error,错误处理,main,panic,机制 来源: https://www.cnblogs.com/smilexuezi/p/15957919.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。