恐慌
緊急停止正常執行流程並退出當前功能。然後,在將控制傳遞給堆疊上的下一個更高功能之前,將執行任何延遲呼叫。每個堆疊的函式將退出並執行延遲呼叫,直到使用延遲 recover()
處理恐慌,或直到恐慌到達 main()
並終止程式。如果發生這種情況,提供給恐慌的引數和堆疊跟蹤將列印到 stderr
。
package main
import "fmt"
func foo() {
defer fmt.Println("Exiting foo")
panic("bar")
}
func main() {
defer fmt.Println("Exiting main")
foo()
}
輸出:
Exiting foo
Exiting main
panic: bar
goroutine 1 [running]:
panic(0x128360, 0x1040a130)
/usr/local/go/src/runtime/panic.go:481 +0x700
main.foo()
/tmp/sandbox550159908/main.go:7 +0x160
main.main()
/tmp/sandbox550159908/main.go:12 +0x120
重要的是要注意 panic
將接受任何型別作為其引數。