painc是一个内建函数,可以中断原有的控制流程,进入一个“恐慌”的流程(就是意思我遇到问题了,不知道该咋办,我好慌),这个过程称为错误处理流程。
恐慌可以直接调用painc产生,也可以由运行时的错误产生,例如数组越界等。
painc()函数能接受任何类型的数据。格式如下。
例如:
painc(404)
painc("error")
painc(Error("file not exists"))
通俗点讲,就是你遇见问题了 painc会终止程序,你没有在程序中添加任何其他措施的话,就打印painc的详细或者内容,然后程序停止运行。但是前面无论产生什么错误都不会影响到defer的执行
func main() {
defer func() {
fmt.Println("test")
panic("defer painc") //执行打印defer painc后程序就终止运行了后面的都没执行
fmt.Println("test1") //未执行
}()
fmt.Println("测试")
panic("test painc") //执行打印test painc后 程序就终止运行了后面的都没执行
fmt.Println("测试1") //未执行
x() //未执行
}
func x() {
fmt.Println("x")
}
输出结果如下:
可以看出painc的结果都被输出到 painc下面了,测试1和test1及x函数都没有执行,除了defer没有影响,但是defer中的painc也终止了。