Go之panic函数和recover函数使用及捕获异常的方法是什么
这篇文章主要介绍“Go之panic函数和recover函数使用及捕获异常的方法是什么”,在日常操作中,相信很多人在Go之panic函数和recover函数使用及捕获异常的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go之panic函数和recover函数使用及捕获异常的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
panic函数
panic函数是内置的一个函数,他的结构如下:
funcpanic(vinterface{})
此函数接受一个接口类型的值,这个值通常是错误的描述,调用次函数后,会引发异常,这将中止当前的程序流程,并在堆栈中记录当前的异常信息。此函数可以被主动调用,也可以在发生数组越界、空指针引用等情况下被动调用。
我们将上篇文章的除法例子进行小小的修改,使用panic进行错误处理:
packagemainimport("fmt")funcdivide(a,bint)int{ifb==0{panic("divisionbyzero")}returna/b}funcmain(){result:=divide(10,0)fmt.Println("theresultis",result)}
运行后,程序直接退出了,报division by zero错误。
recover函数
有些时候,我们不希望panic函数直接粗暴的退出,这时候我们可以使用recover函数对pannic进行捕获,注意,recover函数只能写在defer关键字之后哦!
recover也是内置函数,他的结构如下:
funcrecover()interface{}
他能捕获到的panic函数报出的错误,并使用接口类型进行返回。
我们使用recover对例子再次修改,让程序可以继续的运行,而不是粗暴的退出,代码如下:
packagemainimport("fmt")funcdivide(a,bint)int{deferfunc(){iferr:=recover();err!=nil{fmt.Printf("runtimepanic:%v\n",err)}}()ifb==0{panic("divisionbyzero")}returna/b}funcmain(){result:=divide(10,0)fmt.Println("theresultis",result)}
到此,关于“Go之panic函数和recover函数使用及捕获异常的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!