网络编程
位置:首页>> 网络编程>> Go语言>> Go语言使用defer+recover解决panic导致程序崩溃的问题

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

作者:cui_yonghua  发布时间:2024-01-30 06:29:18 

标签:Go,defer,recover,panic,程序崩溃

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

代码如下:


package main

import (
"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导致程序崩溃的问题

来源:https://cuiyonghua.blog.csdn.net/article/details/94739645

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com