您好,登錄后才能下訂單哦!
這篇文章主要介紹了Go語言如何使用defer和recover解決panic導(dǎo)致程序崩潰的問題,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
案例:如果我們起了一個(gè)協(xié)程,但這個(gè)協(xié)程出現(xiàn)了panic,但我們沒有捕獲這個(gè)協(xié)程,就會造成程序的崩潰,這時(shí)可以在goroutine中使用recover來捕獲panic,進(jìn)行處理,這樣主線程不會受到影響。
代碼如下:
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) } }() //定義一個(gè)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í)行結(jié)果如下圖:
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Go語言如何使用defer和recover解決panic導(dǎo)致程序崩潰的問題”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。