多个reover,为什么最上面的reover获取不到err?

weixin_38064085 2019-09-20 09:18:10
<b>虽然会输出:defer1,但defer1里面的if为假,不知道为什么</b>
```go
package main

import (
"fmt"
)

var flag int = -1

func main() {
test()
}

func test() {
defer func() {
fmt.Println("defer1")
if err := recover(); err != nil {
fmt.Println("err1:",err)
}
}()

if flag > 0 {
panic(">0")
}

defer func() {
fmt.Println("defer2")
if err := recover(); err != nil {
fmt.Println("err2:",err)
}
}()

if flag < 0 {
panic("<0")
}
}
```
...全文
15 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧