GO語言在默認情況下,當發生錯誤後(panic),程序就會退出(崩潰)
如果希望在發生錯誤後,可以捕獲到錯誤,並進行處理,保證程序可以繼續執行,則需要使用GO語言的錯誤處理機制
GO語言中的錯誤處理方式爲:defer,panic,recover
這三者的關係爲,在程序出現錯誤的時候可以拋出一個panic的一場,然後在defer中通過recover來捕獲這個異常,之後再進行相應處理,比如寫錯誤日誌或者給管理員發送一封錯誤郵件
代碼示例
該函數在運行到17行的時候會報錯,因爲num2爲0,無法進行運算,所以會報錯
輸出結果
這裏可以看到,在main中調用該函數後,捕獲異常並且正常輸出,
然後接着運行main函數中後面的代碼
自定義錯誤
介紹:
GO程序中,也支持自定義錯誤,使用errors.New和panic內置函數
1.errors.New("錯誤說明"),會返回一個error類型的值,表示一個錯誤
2.panic內置函數,接受一個interface{}類型的值(在GO語言中interface{}可以是任何值)作爲參數,可以接受error類型的變量,輸出錯誤信息,並退出程序
輸出結果
在程序中使用panic時,程序會被終止,並且輸出傳入panic函數中的參數內容