关于go:Go-快速入门指南-recover

67次阅读

共计 513 个字符,预计需要花费 2 分钟才能阅读完成。

概述

倡议先浏览 defer 大节。

recover 会终止 panic 状态并且返回 panic 的值,函数会从 panic 之前执行到的中央间接返回,不会持续往下执行。

语法规定

**recoverdefer 必须配套应用, 如果 recover 在其余中央执行会返回 nil,不会产生任何成果。
defer 必须在 panic 之前申明,否则 panic 会间接终止程序。**

例子

谬误捕捉

package main
import "fmt"
func main() {if r := recover(); r != nil {fmt.Printf("捕捉到 1 个谬误: %v\n", r)
}
panic("测试")
println("程序执行不到这里")
}
// $ go run main.go
// 输入如下
/**
panic: 测试
...
...
exit status 2
*/

正确捕捉

package main
import "fmt"
func main() {defer func() {if r := recover(); r != nil {fmt.Printf("捕捉到 1 个谬误: %v\n", r)
}
}()
panic("测试")
println("程序执行不到这里")
}
// $ go run main.go
// 输入如下
/**
捕捉到 1 个谬误: 测试
*/

分割我

正文完
 0