gpt4 book ai didi

go - 调用函数会中断 recover() 吗?

转载 作者:IT王子 更新时间:2023-10-29 01:39:11 27 4
gpt4 key购买 nike

我正在使用一个从 panic 中recover()的库,它使用的代码简化为以下内容:

func main() {
defer rec()
panic("X")
}

func rec() {
rec2()
}

func rec2() {
fmt.Printf("recovered: %v\n", recover())
}

这个的输出是:

recovered: <nil>
panic: X
... more panic output ...

值得注意的是,recover() 返回 nil 而不是错误。这是有意的行为吗?

最佳答案

recover 必须由延迟函数直接调用。

来自 language spec :

The return value of recover is nil if any of the following conditions holds:

  • panic's argument was nil;
  • the goroutine is not panicking;
  • recover was not called directly by a deferred function.

关于go - 调用函数会中断 recover() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36728419/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com