标签:语言 err panic func error Go main 异常
一、基本介绍
在Go中不支持传统的try...catch...finally这种处理,在Go中引入了defer、panic、recover处理方式,通过抛出一个panic异常,然后在defer中通过recover捕获这个异常,最后正常处理。
package main import ( "fmt" ) func test() { defer func() { err := recover() // recover() 内置函数,可以捕获到异常 if err != nil { fmt.Println("err=", err) } }() n1 := 5 n2 := 0 res := n1 / n2 fmt.Println("res=", res) } func main() { test() } /* err= runtime error: integer divide by zero */
进行错误处理的好处的可以及时预警,通过邮件或者其它的方式来避免一些严重后果的产生。
二、自定义异常处理
Go程序中,也支持自定义异常处理,使用errors.New和panic内置函数。其中:
- errors.New("错误说明"),返回一个error类型的值,表示一个错误
- panic内置函数,接受一个interface类型的值(任何值)作为参数。可以接收error类型的变量,输出错误信息,并退出程序
package main import ( _"fmt" "errors" ) func cal(number int) (err error) { if number != 5 { return errors.New("输入错误...") } else { return nil } } func test() { err := cal(10) if err != nil { panic(err) } } func main() { test() } /* err= runtime error: integer divide by zero */
标签:语言,err,panic,func,error,Go,main,异常 来源: https://www.cnblogs.com/shenjianping/p/15586272.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。