Go by Example: Panic

英文源地址
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值