recover
文章发布较早,内容可能过时,阅读注意甄别。
运行时 panic 异常一旦被引发就会导致程序崩溃。这当然不是我们愿意看到的,因为谁也不能保证程序不会发生任何运行时错误。
不过,Go 语言为我们提供了专用于“拦截”运行时 panic 的内建函数--recover。他可以是当前的程序从运行时 panic 的状态中恢复并重新获得流程控制权。
注意:recover 只有在 defer 调用的函数中有效。
如果调用了内置函数 recover,并且定义该 defer 语句的函数发生了 panic 异常,recover 会使程序从 panic 中恢复,并返回 panic value。导致 panic 异常的函数不会继续运行,但能正常返回。在未发生 panic 时调用 recover,recover 会返回 nic。
# 1,recover 的使用。
package main
import "fmt"
func testa() {
fmt.Println("aaaaaa")
}
func testb(x int) {
//设置recover
defer func() {
//recover() //可以打印panic的错误信息
//fmt.Println(recover())
if err := recover(); err != nil { //产生panic异常
fmt.Println(err)
}
}() //别忘了这个圆括号,表示调用此匿名函数
var a [10]int
a[x] = 111
}
func testc() {
fmt.Println("ccccc")
}
func main() {
testa()
testb(20)
testc()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29


上次更新: 2024/06/13, 22:13:45
- 01
- 学习周刊-总第221期-2025年第30周07-24
- 02
- CNB云原生开发环境届的瑞士军刀,详解qifei项目07-24
- 03
- vuepress-vdoing主题配置自建不蒜子统计07-20