- 宕机后的所有语句不会执行,但是会执行宕机前的defer语句,recover 捕获宕机错误
package main
import "fmt"
func main() {
defer fmt.Println("1111")
defer func() {
err := recover()
fmt.Println("err is ", err)
}()
panic("panic")
}
- 发生异常时函数获取返回值,主函数callFunc没有指定返回值的变量时无法获取返回值内容
package main
import "fmt"
func callPanic() (a int) {
defer fmt.Println("1111")
defer func() {
if info := recover(); info != nil {
a = 1
} else {
a = 2
}
}()
panic("panic")
}
func main() {
fmt.Println(callPanic())
}