Go 實例範例:恐慌

panic 通常表示某些事情意外地出錯了。我們主要使用它來快速失敗於在正常運作期間不應該發生的錯誤,或那些我們未能妥善處理的錯誤。

package main
import "os"
func main() {

我們會在整個網站使用 panic 來檢查意外錯誤。這是專門用於 panic 的唯一程式。

    panic("a problem")

panic 的常見用途是在一個函式傳回我們不知道如何處理(或想要處理)錯誤值時中斷它。若我們在建立新檔案時取得意外錯誤,以下是 panic 的範例。

    _, err := os.Create("/tmp/file")
    if err != nil {
        panic(err)
    }
}

執行這個程式會讓它 panic,列印一個錯誤訊息與 goroutine 追蹤,並以一個非零狀態碼退出。

main 中第一個 panic 發生時,程式會在沒有執行完剩餘程式碼的情況下退出。如果您想要看到程式嘗試建立一個暫存檔案,請註解掉第一個 panic。

$ go run panic.go
panic: a problem
goroutine 1 [running]:
main.main()
    /.../panic.go:12 +0x47
...
exit status 2

請注意,Go 習慣於使用錯誤指示的回傳值,這與使用例外處理許多錯誤的一些程式語言不同。

下一個範例:Defer