Golang panic用法

Go語言追求簡潔優雅,因此,Go語言不支持傳統的 try…catch…finally 這種異常,由於Go語言的設計者們認爲,將異常與控制結構混在一塊兒會很容易使得代碼變得混亂。由於開發者很容易濫用異常,甚至一個小小的錯誤都拋出一個異常。在Go語言中,使用多值返回來返回錯誤。不要用異常代替錯誤,更不要用來控制流程。在極個別的狀況下,也就是說,遇到真正的異常的狀況下(好比除數爲 0了)。才使用Go中引入的Exception處理:defer, panic, recover。spa

這幾個異常的使用場景能夠這麼簡單描述:Go中能夠拋出一個panic的異常,而後在defer中經過recover捕獲這個異常,而後正常處理。設計

package main

import "fmt"

func main(){

    defer func(){ // 必需要先聲明defer,不然不能捕獲到panic異常
        fmt.Println("c")
        if err:=recover();err!=nil{
            fmt.Println(err) // 這裏的err其實就是panic傳入的內容,55
        }
        fmt.Println("d")
    }()

    f()
}

func f(){
    fmt.Println("a")
    panic(55)
    fmt.Println("b")
    fmt.Println("f")
}


輸出結果:

a
c
d
exit code 0, process exited normally.
相關文章
相關標籤/搜索