go语言入门
panic
用于抛出一个运行时异常,会向上传播,直到某个方法中使用了recover的内建函数接收了这个异常,程序才会恢复
需要配合defer函数使用,这样才符合接收异常的语句。而且defer语句要写在可能发生异常的代码之前
以下例子会输出这些内容
Enter main
Enter outerFunc
Enter innerFunc
Fatal error: Occur a panic!
package main
import (
"errors"
"fmt"
)
func innerFunc() {
fmt.Println("Enter innerFunc")
panic(errors.New("Occur a panic!"))
fmt.Println("Quit innerFunc")
}
func outerFunc() {
fmt.Println("Enter outerFunc")
innerFunc()
fmt.Println("Quit outerFunc")
}
func main() {
defer func() {
if p := recover(); p != nil {
fmt.Printf("Fatal error: %s\n", p)
}
}()
fmt.Println("Enter main")
outerFunc()
fmt.Println("Quit main")
}