13.3 从 panic 中恢复(recover)
...小于 1 分钟
13.3 从 panic 中恢复(recover)
recover()
用于从错误场景中恢复,让程序从 Panicking 中获得控制权,停止终止过程恢复正常执行。
recover()
只能在defer
修饰的函数中使用,用于取得panic()
调用中传递的错误值;若正常执行,recover()
返回nil
。
panic()
会导致栈被展开知道defer
修饰的recover()
被调用或者程序终止。
package chapter_13
import "fmt"
func panicRecover() {
fmt.Println("Calling test")
test()
fmt.Println("Test completed")
}
func badCall() {
panic("bad end")
}
func test() {
defer func() {
if err := recover(); err != nil {
fmt.Printf("Panicing %s \n", err)
}
}()
badCall()
fmt.Printf("After bad call \n")
}
Calling test
Panicing bad end
Test completed
Powered by Waline v2.15.2