Go語言使用defer+recover解決panic導致程序崩潰的問題
更新時間:2021年09月23日 15:12:08 作者:cui_yonghua
如果協(xié)程出現了panic,就會造成程序的崩潰,這時可以在goroutine中使用recover來捕獲panic,進行處理,本文就詳細的介紹一下,感興趣的可以了解一下
案例:如果我們起了一個協(xié)程,但這個協(xié)程出現了panic,但我們沒有捕獲這個協(xié)程,就會造成程序的崩潰,這時可以在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發(fā)生錯誤",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)
}
}
執(zhí)行結果如下圖:

到此這篇關于Go語言使用defer+recover解決panic導致程序崩潰的問題的文章就介紹到這了,更多相關Go panic程序崩潰內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go使用Google?Gemini?Pro?API創(chuàng)建簡單聊天機器人
這篇文章主要為大家介紹了Go使用Google?Gemini?Pro?API創(chuàng)建簡單聊天機器人實現過程詳解,本文將通過最新的gemini?go?sdk來實現命令行聊天機器人2023-12-12

