golang中recover和panic用法, goland里的try catch

golang中recover和panic用法, goland里的try catch,第1张

概述golang中没有try... catch...,所以当golang中遇到panic时,如果不进行recover,便会导致整个程序挂掉,具体例子如下: [html]  view plain  copy package main      import (       "fmt"   )      func main() {       panic("fault")       fmt.Printl

golang中没有try... catch...,所以当golang中遇到panic时,如果不进行recover,便会导致整个程序挂掉,具体例子如下:

[HTML] view plain copy packagemain import( "fmt" ) funcmain(){ panic("fault") fmt.Println("panic") } 运行结果: panic:fault goroutine16[running]:... 程序挂掉,并且报告出错的地方,并打印出掉用的栈


解决办理:利用defer延迟处理的recover进行恢复,具体例子如下:

copy deferfunc(){ fmt.Println("1") }() deferfunc(){ iferr:=recover();err!=nil{ fmt.Println(err) }() fmt.Println("2") 运行结果: fault 1 程序首先运行panic,出现故障,此时跳转到包含recover()的defer函数执行,recover捕获panic,此时panic就不继续传递.但是recover之后,程序并不会返回到panic那个点继续执行以后的动作,而是在recover这个点继续执行以后的动作,即执行上面的defer函数,输出1.

注意:利用recover处理panic指令,必须利用defer在panic之前声明,否则当panic时,recover无法捕获到panic,无法防止panic扩散.

总结

以上是内存溢出为你收集整理的golang中recover和panic用法, goland里的try catch全部内容,希望文章能够帮你解决golang中recover和panic用法, goland里的try catch所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1274625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存