panic 意味着有些出乎意料的错误发生。 通常我们用它来表示程序正常运行中不应该出现的错误, 或者我们不准备优雅处理的错误。

package main

import "os"

func main() {

// panic表示程序不能捕获的错误,这会影响程序的正常运行,终止程序
    panic("a problem")

    _, err := os.Create("/tmp/file")

// panic 的一种常见用法是:当函数返回我们不知道如何处理(或不想处理)的错误值时,中止操作。 如果创建新文件时遇到意外错误该如何处理?这里有一个很好的 panic 示例。
    if err != nil {
        panic(err)
    }
}

 

运行程序将会导致 panic: 输出一个错误消息和协程追踪信息,并以非零的状态退出程序。

 

当 main 中触发第一个 panic 时,程序就会退出而不会执行代码的其余部分。 如果你想看到程序尝试创建 /tmp/file 文件,请注释掉第一个panic。

 

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

 

原创文章,转载请注明出处:http://www.nwumba.cn/article/81/