Go 錯誤處理

董雷發表於2021-10-27

Go 錯誤處理

  • error型別是一個介面型別,這是它的定義:
    type error interface {
      Error() string
    }

Go 捕獲異常

傳統捕捉異常的方式

try 
catch
finally

go語言

引入了defer、panic、recover
1.Go程式丟擲一個panic異常,在defer中通過recover捕獲異常,然後處理

案例

package main
import "fmt"
func test() {
    //在函式退出前,執行defer
    //捕捉異常後,程式不會異常退出
    defer func() {
        err := recover() //內建函式,可以捕捉到函式異常
        if err != nil {
            //這裡是列印錯誤,還可以進行報警處理,例如微信,郵箱通知
            fmt.Println("err錯誤資訊:", err)
        }
    }()
    //如果沒有異常捕獲,直接報錯panic,執行時出錯
    num1 := 10
    num2 := 0
    res := num1 / num2
    fmt.Println("res結果:", res)
}
func main() {
    test()
    fmt.Println("如果程式沒退出,就走我這裡")
}

列印結果

err錯誤資訊: runtime error: integer divide by zero
如果程式沒退出,就走我這裡
Exiting.
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章