Golang通常有三種錯誤處理方式:錯誤哨兵(Sentinel Error)、錯誤類型斷言和記錄錯誤調(diào)用棧。錯誤哨兵指的是用特定值的變量作為錯誤處理分支的判定條件。錯誤類型用于路由錯誤處理邏輯,和錯誤哨兵有異曲同工的作用,由類型系統(tǒng)來提供錯誤種類的唯一性。錯誤黑盒指的是不過分關(guān)心錯誤類型,將錯誤返回給上層;當(dāng)需要采取行動時,要針對錯誤的行為進行斷言,而非錯誤類型。
本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。
golang沒有提供try-catch
類似的錯誤處理機制,在設(shè)計層面采用了C語言風(fēng)格的錯誤處理,通過函數(shù)返回值返回出錯的錯誤信息,具體樣例如下:
func ReturnError() (string, error) { return "", fmt.Errorf("Test Error") } func main() { val, err := ReturnError() if err != nil { panic(err) } fmt.Println(val) }
登錄后復(fù)制
上面的例子是一個基本的錯誤處理樣例,生產(chǎn)環(huán)境中執(zhí)行的調(diào)用棧往往非常復(fù)雜,返回的error
也各式各樣,常常需要根據(jù)返回的錯誤信息確定具體的錯誤處理邏輯?!?/p>