恐慌
紧急停止正常执行流程并退出当前功能。然后,在将控制传递给堆栈上的下一个更高功能之前,将执行任何延迟调用。每个堆栈的函数将退出并运行延迟调用,直到使用延迟 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
将接受任何类型作为其参数。