Go語言之錯誤處理

LT-2發表於2020-10-01

錯誤處理機制

當程式發生錯誤,程式就會崩潰,所以,引進錯誤處理機制,當發生錯誤後,可以捕獲錯誤,並進行處理,保證程式正常執行,並返回給管理員錯誤的資訊提示。

異常處理

Go中丟擲一個panic的異常,然後在關鍵字defer中通過recover()函式捕獲這個異常,最後正常處理。

defer語句的作用是不管程式是否出現異常,均在函式退出時自動執行相關程式碼。

程式案例

package main
import (
	"fmt"
)

func test() {
    // 使用defer + recover 來捕獲異常
    defer func() {
        // recover()內建函式,可以捕獲異常
        err := recover()
        // 說明捕獲異常的錯誤
        if err != nil {
            fmt.Println("err=", err)
        }
    }
    num1 := 10
    num2 := 0
    res := num1 / num2
    fmt.Println("res=", res)
}

func main() {
    test()
}

自定義錯誤

error型別是go語言的一種內建型別,是一個介面。

errors.New(“錯誤說明”),會返回一個error型別的值,表示一個錯誤

panic()內建函式,接收一個interface{}型別的值 作為引數,可接收error型別的變數,輸出錯誤資訊,並退出程式

程式案例

package main
import "fmt"


func readConf(name string) error {
    if name == "config.ini" {
        return nil
    } else {
        return errors.New("讀取檔案錯誤")
    }
}

func main() {
    err := readConf("config1.ini")
    if err != nil {
        panic(err)
    } else {
        fmt.Println("繼續執行")
    }
    
    fmt.Println("main函式繼續執行")   
}

相關文章