golang中recover和panic用法
来源:互联网 发布:c语言程序实例代码 编辑:程序博客网 时间:2024/06/15 11:06
原文:http://blog.csdn.net/chenbaoke/article/details/41966827
golang中没有try… catch…,所以当golang中遇到panic时,如果不进行recover,便会导致整个程序挂掉,具体例子如下:
package main import ( "fmt" ) func main() { panic("fault") fmt.Println("panic") }
运行结果:
panic: fault
goroutine 16 [running]:…
程序挂掉,并且报告出错的地方,并打印出掉用的栈
解决办理:利用defer延迟处理的recover进行恢复,具体例子如下:
package main import ( "fmt" ) func main() { defer func() { fmt.Println("1") }() defer func() { if err := recover(); err != nil { fmt.Println(err) } }() panic("fault") fmt.Println("2") }
运行结果:
fault
1
程序首先运行panic,出现故障,此时跳转到包含recover()的defer函数执行,recover捕获panic,此时panic就不继续传递.但是recover之后,程序并不会返回到panic那个点继续执行以后的动作,而是在recover这个点继续执行以后的动作,即执行上面的defer函数,输出1.
注意:利用recover处理panic指令,必须利用defer在panic之前声明,否则当panic时,recover无法捕获到panic,无法防止panic扩散.
阅读全文
0 0
- golang中recover和panic用法
- golang中recover和panic用法
- golang异常panic和恢复recover用法
- GOLANG的PANIC和RECOVER
- Golang中的panic和recover
- golang中recover和panic用法, goland里的try catch
- golang之defer,panic,recover用法
- golang错误处理之panic和recover
- GO panic和recover的用法
- golang中的defer panic recover
- Golang---Defer, Panic, and Recover
- Golang中的defer, panic, recover
- 【GoLang】panic defer recover 深入理解
- Golang 中的 panic 与 recover 理解
- golang 使用defer、panic、recover的问题
- Go语言中使用panic和recover简化错误处理
- 理解Defer、Panic和Recover
- Go学习笔记:panic()和recover()
- Netty源码分析(八)—内存池分析
- [BZOJ3282]LCT模板(单点修改,区间查询)
- HDU 4421 Bit Magic 【2-SAT】
- 数据hive常见问题
- 解决vue2.0路由跳转未匹配相应路由而出现空白页面的问题
- golang中recover和panic用法
- C3P0连接池XML版
- MIT18.06线性代数课程笔记12:使用邻接矩阵证明欧拉定理
- 【Scikit-Learn 中文文档】多类和多标签算法
- 简明 VIM 练级攻略(转)
- Java String操作
- 美国space爬虫
- 解决ssh+mysql进行插入时报dialect is not found错误
- HTML02- 列表、表格与框架