Go異常處理

2022-04-04 00:29:30 字數 808 閱讀 7112

首先很抱歉,由於搬家,最近太多事情要處理,導致文章更新比較慢。

這篇文章,我們講go中的異常處理。

go提供了兩個內建函式 panic()和recover()用於異常處理。

go中,對異常處理的整體原則是:多用errors包,少用panic。

對於可預見的錯誤,比如網路連線失敗等,一般都使用errors,只有重大錯誤才會使用panic。

記住乙個大原則:panic會導致程式直接掛掉,除非呼叫了recover方法。

在函式內部呼叫 panic 會立即終止當前函式的執行,由當前呼叫棧逐層返回,一直到最頂層的 main 函式或是被某一層的 recover 捕捉到。

看例子:

package main

import (

func main()

func sub()

func handler()

else

}執行結果:

start main

before panic

recover msg: golang_everyday

end main

可以看到,sub函式沒有執行完,panic後執行了defer就返回到上層main函式了,但是main函式執行結束了。

這是因為recover阻止了異常的繼續傳播。他將panic限制在了一定的範圍內。

這就像屋子裡丟了一炸彈(panic產生了),本來所有人都要掛掉的(panic傳遞到main,整個程式退出),但是有乙個叫recover的小夥子非常勇敢,duang!!!抱到炸彈上去了,損失就控制在一定範圍內了,如果這小夥子越早的抱到炸彈,受傷的人就會越少。

go 異常處理

package main import fmt 異常處理 defer panic recover defer 表示延遲呼叫,即便程式出現嚴重錯誤,也會執行 panic 就是python中的raise 主動丟擲異常 recover 恢復程式,繼續執行 func main func f1 func f2...

Go異常處理defer panic recover

異常處理功能猶如 try catch finally func d defer f.close 在這裡可以避免忘記檔案關閉,尤其在複雜的邏輯判斷業務處理中,容易遺漏檔案關閉操作。do something func d 結果 321 0func d i 傳入當前 i 值,i 1 i 1 fmt.pri...

go語言基礎異常處理

異常處理模板 package main import fmt 異常處理 defer panic recover defer 表示延遲呼叫,即便程式出現嚴重錯誤,也會執行 panic 就是python中的raise 主動丟擲異常 recover 恢復程式,繼續執行 func main func f1 ...