Go 面試題 004:Go 有異常類型嗎?
大家好,我是明哥。
歡迎大家再次來到 『Go 語言面試題庫』 這個專欄
本專欄內(nèi)容,已經(jīng)上傳 github:https://github.com/iswbm/golang-interview
請大家?guī)蛶兔θc(diǎn)個小 ??,在那里我對題庫進(jìn)行了分類整理
第四題

請聽題:
Go 有異常類型嗎?
在解答這個問題前,有必要對錯誤和異常做一個解釋
錯誤:指的是可能出現(xiàn)問題的地方出現(xiàn)了問題,比如打開一個文件時失敗,這種情況在人們的意料之中 ;
異常:指的是不應(yīng)該出現(xiàn)問題的地方出現(xiàn)了問題,比如引用了空指針,這種情況在人們的意料之外。
在 Go 沒有異常類型,只有錯誤類型(Error)。
一個函數(shù)要是想返回錯誤,通常會使用返回值來表示異常狀態(tài),它很像 C語言中的錯誤碼,可逐層返回,直到被處理。
f, err := os.Open("test.txt")
if err != nil {
log.Fatal(err)
}
Go 語言中雖然沒有異常的概念,但是卻有更為恐怖的 panic ,由于有了 recover,在一定程度上, panic 可以類比做異常。
Golang錯誤和異常(panic)是可以互相轉(zhuǎn)換的:
錯誤轉(zhuǎn)異常:比如程序邏輯上嘗試請求某個URL,最多嘗試三次,嘗試三次的過程中請求失敗是錯誤,嘗試完第三次還不成功的話,失敗就被提升為異常了。
異常轉(zhuǎn)錯誤:比如panic觸發(fā)的異常被recover恢復(fù)后,將返回值中error類型的變量進(jìn)行賦值,以便上層函數(shù)繼續(xù)走錯誤處理流程。

???
評論
圖片
表情
