defer、panic、recover
defer
延迟执行代码。先defer后执行,后defer先执行
defer注册要延迟执行的函数时,该函数所有的参数都需要其值为确定值
func main() {
defer fmt.Println("1")
defer fmt.Println("2")
defer fmt.Println("3")
}
// 3 2 1
panic、recover
panic抛出异常, recover接收异常。但是,recover只能写在defer注册的函数内
func main() {
func() {
defer func() {
err := recover()
if err != nil {
fmt.Println(err)
}
}()
panic("有异常")
}()
}