概述

倡议先浏览 defer 大节。

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

语法规定

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

例子

谬误捕捉

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

分割我