Go 语言中使用 defer
和 panic
来进行异常捕获。
当程序遇到一个严重的错误时,可以使用 panic
来使程序立即停止运行,并触发一个 panic 异常。在 panic 异常被触发时,Go 语言会沿着调用栈向上查找,直到找到一个能够处理这个异常的 recover 函数。recover 函数可以通过返回一个值来阻止 panic 的继续传播。
使用 defer 关键字可以将函数推迟到当前函数返回之前执行,利用这个特性,我们可以在函数中设置 recover 函数,在发生异常时及时捕获它们。
以下是一个简单的示例:
func someFunction() {
defer func() {
if err := recover(); err != nil {
log.Println("Error occurred:", err)
}
}()
// do something that might cause an error
}
在上面的示例中,someFunction
中的代码可能会抛出一个异常。如果异常发生了,程序将跳转到 defer 函数中,其中的 recover 函数将捕获异常并记录下来。这样我们就可以在函数执行过程中捕获异常并对其进行处理。