1. 程式人生 > 實用技巧 >go基礎筆記-錯誤處理

go基礎筆記-錯誤處理

錯誤處理機制
Go 中引入的處理方式為:defer, panic, recover

錯誤處理的好處:
進行錯誤處理後,程式不會輕易掛掉,如果加入預警程式碼,就可以讓程式更加的健壯。


案例:
func test() {
    //使用defer + recover 來捕獲和處理異常
    defer func() {
        err := recover()  // recover()內建函式,可以捕獲到異常
        if err != nil {  // 說明捕獲到錯誤
            fmt.Println("err=", err)
        }
    }()  
    num1 :
= 10 num2 := 0 res := num1 / num2 fmt.Println("res=", res) } func main() { test() fmt.Println("main()下面的程式碼...") } 自定義錯誤 Go 程式中,也支援自定義錯誤, 使用 errors.New 和 panic 內建函式。 errors.New("錯誤說明") , 會返回一個 error 型別的值,表示一個錯誤 panic 內建函式 ,接收一個 interface{}型別的值(也就是任何值了)作為引數。可以接收 error 型別的變數,輸出錯誤資訊,並退出程式. 案例: package main
import ( "fmt" "errors" ) //函式去讀取以配置檔案init.conf的資訊 //如果檔名傳入不正確,我們就返回一個自定義的錯誤 func readConf(name string) (err error) { if name == "config.ini" { //讀取... return nil } else { //返回一個自定義錯誤 return errors.New("讀取檔案錯誤..") } } func test02() { err := readConf("
config.ini") if err != nil { //如果讀取檔案傳送錯誤,就輸出這個錯誤,並終止程式 panic(err) } fmt.Println("test02()繼續執行....") } func main() { //測試自定義錯誤的使用 test02() fmt.Println("main()下面的程式碼...") }