1. 程式人生 > >go 錯誤處理panic recover

go 錯誤處理panic recover

發生 通過 def src 錯誤處理 int term ani log

當程序遇到致命錯誤時,就是停止運行
Go 通過panic函數來報告致命錯誤

func testError1()  {
    panic(errors.New("this is a error"))
}

技術分享圖片

代碼執行中出現錯誤
比如數組越界

    index := 4
    arr := []int{1,2,3}
    _  = arr[index]

技術分享圖片

那如何“攔截”運行時發生的錯誤?
recover函數
會返回一個interface{} 類型的結果,如果程序發生錯誤,就會返回非nil
和defer函數結合使用,就會將錯誤捕捉到進行處理

func testError()  {
    defer func() {
        if e := recover(); e != nil {
            fmt.Printf("panic : %s\n", e)
        }
    }()
    index := 4
    arr := []int{1,2,3}
    _  = arr[index]
}

技術分享圖片

go 錯誤處理panic recover