老师,请教一下 关于 defer func () {recover()}的问题
来源:8-5 服务器统一出错处理2

lieh1203
2022-04-14
code:
func tryRecover() {
defer func() {
r := recover()
if err, ok := r.(error); ok {
fmt.Println("Error occurred: ", err)
} else {
// 无法转换error时,只能panic处理
panic(fmt.Sprintf(“I don’t know what to do: %v”, r))
}
}()
}
result:
ok
panic: I don’t know what to do:
goroutine 1 [running]:
main.tryRecover.func1()
D:/Go/depthgo/errhanding/recover/recover.go:14 +0xf9
main.tryRecover()
D:/Go/depthgo/errhanding/recover/recover.go:25 +0x85
main.main()
D:/Go/depthgo/errhanding/recover/recover.go:28 +0x17
老师,执行的代码里面没有报错,还是会进入到 defer func () { recover()}函数里面,触发panic了,这个要怎么处理?
写回答
1回答
-
merlin丶kael
2022-04-16
defer 后面的代码 一定会执行的 .
既然 你的 方法 没有 业务逻辑代码 就不用 写 defer func(){}() 了
00
相似问题