recover()函数可以用于获取/拦截panic。recover()仅在defer中被调用时,才能完成此功能。
package main
import "fmt"
func main() {
panic("not good") //抛出异常,下面代码不会执行
recover() //收不到异常
fmt.Println("ok")
}
输出:
main.main()
/Users/xxx/gowork/study/test/test.go:4 +0x20
exit status 2
真确的用法:
package main
import "fmt"
func main() {
defer func() {
fmt.Println("recovered:",recover())
}()
panic("not good")
}
recovered()在defer中简介通过函数调用将不能捕获panic。
package main
import "fmt"
func doRecover() {
fmt.Println("recovered =>",recover())
}
func main() {
defer func() {
doRecover() //这里间接调用recover不能捕获panic
}()
panic("not good")
}
本文介绍了Go语言中panic和recover的使用方法。通过实例演示了如何利用defer语句配合recover函数来捕获并处理panic异常,同时指出直接调用recover无法捕获panic的情况。
639

被折叠的 条评论
为什么被折叠?



