小學(xué)生也能看懂的Golang異常處理recover panic
🌌 專注Golang,Python語言,云原生,人工智能領(lǐng)域得博主
💜 過去經(jīng)歷的意義在于引導(dǎo)你,而非定義你,
💜 只要我們足夠努力,任何人都有無限潛力
- 🚀panic 拋出異常函數(shù)
- 🚀recover 捕獲異常函數(shù)
📣1:在一個主協(xié)成內(nèi)捕獲異常
package main import ( "fmt" ) func main(){ defer func(){ err := recover() if err != nil{ fmt.Println("捕獲到異常") } }() panic("異常出現(xiàn)") //拋出異常,代表錯誤代碼 }
🚀運行結(jié)果
📣2:假設(shè)子協(xié)成內(nèi)部錯誤,看看主協(xié)成能不能捕獲到
package main import ( "fmt" ) func Calculate(){ panic("異常出現(xiàn)") // 同樣代表錯誤代碼 } func main(){ defer func(){ err := recover() if err != nil{ fmt.Println("捕獲到異常") } }() go Calculate() time.Sleep(time.Second*3) //防止主協(xié)成過早退出,導(dǎo)致子協(xié)成沒執(zhí)行 }
🚀執(zhí)行結(jié)果,主協(xié)成不能捕獲到子協(xié)成的錯誤
📣3:假設(shè)子協(xié)成錯誤需要自己捕獲
package main import ( "fmt" "time" ) func Calculate(){ defer func(){ err := recover() if err != nil{ fmt.Println("協(xié)成內(nèi)部捕獲異常") } }() panic("異常出現(xiàn)") } func main(){ go Calculate() time.Sleep(time.Second*3) }
執(zhí)行結(jié)果,成功捕獲異常
到此這篇關(guān)于小學(xué)生也能看懂的Golang異常處理recover panic的文章就介紹到這了,更多相關(guān)Golang 異常處理 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
GO語言實現(xiàn)的http抓包分析工具pproxy介紹
這篇文章主要介紹了GO語言實現(xiàn)的http抓包分析工具pproxy介紹,本文同時對比了Fiddler、Charles等抓包軟件,需要的朋友可以參考下2015-03-03詳解Golang time包中的結(jié)構(gòu)體time.Time
在日常開發(fā)過程中,會頻繁遇到對時間進行操作的場景,使用 Golang 中的 time 包可以很方便地實現(xiàn)對時間的相關(guān)操作,本文先講解一下 time 包中的結(jié)構(gòu)體 time.Time,需要的朋友可以參考下2023-07-07