Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了golang中recover和panic用法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

原文:http://code.js-code.com/article/p-fqwupiyj-bhd.html
golang中没有try… catch…,所以当golang中遇到panic时,如果不进行recover,便会导致整个程序挂掉,具体例子如下:

package main  

import ( "fmt" ) func @H_776_5@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扩散.

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。