英文源地址
Panic通常意味着事情出乎意料地出错了.大多数情况下, 我们使用它来快速处理在正常操作中不应该发生的错误, 或者我们没有准备好优雅处理的错误.
package main
import "os"
func main() {
// 我们将在整个网站中使用panic来检查意外错误
// 这是网站中唯一一个用来制造panic的程序
panic("a problem")
// panic的一种常见用法是, 如果函数返回一个我们不知道如何(或想要)处理的错误值, 就终止它.
// 下面是一个创建新文件时出现意外错误的例子
_, err := os.Create("/tmp/file")
if err != nil {
panic(err)
}
}
运行此程序将导致panic, 打印错误信息和运行协程跟踪, 并以非零状态退出.
当main函数中第一次panic触发时, 程序退出而不触及其余代码.如果希望看到程序尝试创建一个临时文件, 请注释第一个panic.
$ go run panic.go
panic: a problem
goroutine 1 [running]:
main.main()
/.../panic.go:12 +0x47
...
exit status 2
请注意. 与一些使用异常处理许多错误的语言不同, Go语言习惯上尽可能使用指代错误的返回值.
下一节将介绍Defer