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

我正在使用一个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而不是错误。这是预期的行为吗?


qq_遁去的一_1
浏览 132回答 1
1回答

喵喔喔

recover&nbsp;必须由延迟函数直接调用。从语言规范:如果以下任何一个条件成立,recover 的返回值为 nil:恐慌的论点是零;goroutine 不会恐慌;恢复不是由延迟函数直接调用的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go