面试题答案
一键面试recover的基本场景
- 处理运行时错误:在Go语言中,当程序遇到不可恢复的错误时会触发
panic
,recover
可用于捕获这些panic
,避免程序崩溃,使程序能从错误状态中恢复并继续执行。 - 在延迟函数中处理异常:
recover
只能在延迟函数 (defer
) 中生效,通常用于在函数执行即将结束时捕获可能发生的panic
。
代码示例
package main
import "fmt"
func main() {
// 调用可能触发panic的函数
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
testPanic()
fmt.Println("This line will be printed after recovery.")
}
func testPanic() {
panic("Simulated panic")
}
在上述代码中:
main
函数中定义了一个延迟函数,该延迟函数使用recover
来捕获可能发生的panic
。testPanic
函数触发了一个panic
,main
函数中的延迟函数捕获到这个panic
,输出错误信息并恢复程序执行,使得fmt.Println("This line will be printed after recovery.")
这行代码能够执行。