在线文档  >   Golang练习   >   异常(Panic)

在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)
    }
}

运行结果如下:

$ go run panic.go
panic: a problem

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

运行此程序将导致它死机,打印 错误消息 和 goroutine 跟踪,并以非零状态退出。

当“main”中的第一个 panic 触发时,程序退出而不到达代码的其余部分。如果你想看到程序尝试创建一个临时文件,请注释掉第一个 panic

请注意,与某些使用异常来处理许多错误的语言不同,在 Go 中,尽可能使用错误指示返回值是惯用的方式。