千家信息网

Go语言如何使用defer和recover解决panic导致程序崩溃的问题

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这篇文章主要介绍了Go语言如何使用defer和recover解决panic导致程序崩溃的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一
千家信息网最后更新 2025年02月07日Go语言如何使用defer和recover解决panic导致程序崩溃的问题

这篇文章主要介绍了Go语言如何使用defer和recover解决panic导致程序崩溃的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

案例:如果我们起了一个协程,但这个协程出现了panic,但我们没有捕获这个协程,就会造成程序的崩溃,这时可以在goroutine中使用recover来捕获panic,进行处理,这样主线程不会受到影响。

代码如下:

package mainimport (        "fmt"        "time")func sayHello()  {        for i := 0; i < 10; i++ {                time.Sleep(time.Second)                fmt.Println("hello world")        }}func test()  {        //使用 defer + recover        defer func() {                //捕获test抛出的panic                if err := recover();err!=nil{                        fmt.Println("test发生错误",err)                }        }()        //定义一个map        var myMap map[int]string        myMap[0] = "golang" //error}func main() {        go sayHello()        go test()        for i := 0; i < 10; i++ {                fmt.Println("main() ok=",i)                time.Sleep(time.Second)        }}

执行结果如下图:

感谢你能够认真阅读完这篇文章,希望小编分享的"Go语言如何使用defer和recover解决panic导致程序崩溃的问题"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0