共计 513 个字符,预计需要花费 2 分钟才能阅读完成。
概述
倡议先浏览 defer 大节。
recover
会终止 panic
状态并且返回 panic
的值,函数会从 panic
之前执行到的中央间接返回,不会持续往下执行。
语法规定
**recover
和 defer
必须配套应用, 如果 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 个谬误: 测试 | |
*/ |
分割我
正文完