Go 示例: Panic

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.