Go語言基礎之異常處理

異常處理

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。

注:該筆記是本人通過學習視頻,做的學習筆記~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章