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