異常處理
1. error接口
- 接口定義:
// 內建的接口定義
type error interface {
Error() string
}
// 標準庫代碼包errors
packeage errors
type errorString struct {
text string
}
func New(text string) error {
return &errorString{text}
}
func (e *errorString) Error() string {
return e.text
}
2. panic
- 遇到不可恢復的錯誤狀態的時候,如數組訪問越界、空指針引用等,這些運行時錯誤會引起painc異常
- 當panic異常發生時,程序會中斷運行,並立即執行在該goroutine
- (可以先理解成線程,在中被延遲的函數(defer 機制)。
- 隨後,程序崩潰並輸出日誌信息。
- 日誌信息包括panic value和函數調用的堆棧跟蹤信息。
func panic(v interface{})
3. recover
-
專用於“攔截”運行時panic的內建函數——recover。
-
它可以是當前的程序從運行時panic的狀態中恢復並重新獲得流程控制權。
func recover() interface{}
- 注意:recover只有在defer調用的函數中有效。
-
如果調用了內置函數recover,並且定義該defer語句的函數發生了panic異常,recover會使程序從panic中恢復,並返回panic value。導致panic異常的函數不會繼續運行,但能正常返回。在未發生panic時調用recover,recover會返回nil。
注:該筆記是本人通過學習視頻,做的學習筆記~