如何从 panic 中恢复 ?

在 Go 语言中,你可以使用 recover 函数来从 panic 中恢复。recover 使程序从恐慌状态(panic)中恢复并重新获得流程控制权。

基本的使用方法如下:

func f() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from", r)
        }
    }()
    fmt.Println("About to panic")
    panic("some reason") 
    fmt.Println("This line will not be executed")
}

func main() {
    f()
    fmt.Println("Returned normally from f.")
}

在这个例子中,f 函数中的 defer 语句包含了一个匿名函数。在这个匿名函数中,我们调用了 recover 函数。如果 panic 发生,recover 函数会捕获 panic 的值,并且让程序从 panic 状态中恢复过来,然后程序会继续执行 defer 后面的语句。在 recover 后面的代码中,我们可以添加一些处理逻辑,比如错误日志的记录等。

注意:

  1. recover 必须在 defer 函数中执行,才能捕获到 panic 异常。如果不在 defer 函数中调用,当 panic 发生后,recover 将无法捕获到 panic,程序将会异常退出。
  2. 如果在 defer 函数中有多个 recover,只有最后一个可以捕获 panic

以上就是在 Go 语言中如何从 panic 中恢复。

发表评论

后才能评论