📜  GO语言 recover(1)

📅  最后修改于: 2023-12-03 15:15:25.091000             🧑  作者: Mango

GO语言 recover

简介

在GO语言中,recover()是一个内置函数,用于恢复在程序运行时由 panic() 函数引起的错误。

它只在defer语句内使用,并且必须是在引发 panic() 的函数中进行处理的。

当程序运行时调用panic()函数时,程序的运行会停止,但是,在程序的退出之前可以通过使用recover()来处理panic()引起的错误,并且使程序能够正常地退出。

用法

在定义函数时,使用defer关键字在函数离开之前执行代码。defer会等待函数返回时延迟执行,正常return语句也会触发defer,即先执行普通的return语句,再执行defer函数。

func functionA() {
    defer functionB()
    …
    panic()  //产生错误
    …
}

当发生 panic() 错误时,第一次调用defer的functionB()将被调用。 functionB()也可以是一个匿名函数,如下所示:

func functionA() {
    defer func() {
        if err := recover(); err != nil {
            log.Println("Error:", err)
        }
    }()
    …
    panic("Custom error message")  //产生错误
    …
}

注意事项

如果程序在错误处理后仍然需要继续运行,则必须在defer函数内使用recover()。

如果程序继续运行,则recover()将返回错误代码,否则,它将返回nil。

总结

recover()函数是一个非常强大但易于忽略的工具。使用它可以使程序更加稳定和可靠,避免因错误而引起的程序崩溃。

在使用recover()时需要小心,必须在引发panic()的函数内使用,在函数声明时使用defer关键字,在必要的情况下使用匿名函数。