Panic通常意味著事情出乎意料地錯了。大多數(shù)情況下,使用它來正常運(yùn)行時不應(yīng)該出現(xiàn)的錯誤,或者不準(zhǔn)備妥善處理。
在程序中可使用panic來檢查意外錯誤。
如果一個函數(shù)返回一個我們不知道如何(或想要)處理的錯誤值,那么panic的常見用法就是中止。這里有一個例子,如果在創(chuàng)建一個新文件時遇到意外錯誤。
運(yùn)行此程序?qū)?dǎo)致程序出錯,打印錯誤消息和goroutine跟蹤,并退出非零狀態(tài)。
注意,與一些使用異常處理許多錯誤的語言不同,在Go中,盡可能使用返回值指示錯誤。
所有的示例代碼,都放在
F:\worksp\golang目錄下。安裝Go編程環(huán)境請參考:http://www.yiibai.com/go/go_environment.html
panic.go的完整代碼如下所示 -
package main
import "os"
func main() {
// We'll use panic throughout this site to check for
// unexpected errors. This is the only program on the
// site designed to panic.
panic("a problem")
// A common use of panic is to abort if a function
// returns an error value that we don't know how to
// (or want to) handle. Here's an example of
// `panic`king if we get an unexpected error when creating a new file.
_, err := os.Create("/tmp/file")
if err != nil {
panic(err)
}
}
執(zhí)行上面代碼,將得到以下輸出結(jié)果 -
F:\worksp\golang>go run panic.go
panic: a problem
goroutine 1 [running]:
panic(0x4679c0, 0xc042044180)
D:/software/golang/src/runtime/panic.go:500 +0x1af
main.main()
F:/worksp/golang/panic.go:10 +0x74
exit status 2