panic 抛出 500 错误 后续程序终止执行
结果:
我是a
我是b
我是panic
** 不执行 我是c
func main() {
a()
b()
c()
}
func a() {
fmt.Println("我是 a")
}
func b() {
fmt.Println("我是 b")
panic("我是panic")
}
func c() {
fmt.Println("我是 c")
}
recover 不会报500 也会终止后续程序 ,必须搭配 defer 使用,一定要在可能引发 panic 的语句前定义
结果:
我是 a
我是recover
我是 c
func main() {
a()
b()
c()
}
func a() {
fmt.Println("我是 a")
}
func b() {
defer func() {
err := recover()
if err != nil {
fmt.Println("我是recover")
}
}()
panic("我是错误")
}
func c() {
fmt.Println("我是 c")
}