go recover的执行时机
recover 必须在 defer 函数中运行。recover 捕获的是祖父级调用时的异常,直接调用时无效。
func main() {
recover()
panic(1)
}
直接 defer 调用也是无效。
func main() {
defer recover()
panic(1)
}
defer 调用时多层嵌套依然无效。
func main() {
defer func() {
func() { recover() }()
}()
panic(1)
}
必须在 defer 函数中直接调用才有效。
func main() {
defer func() {
recover()
}()
panic(1)
}