面试题答案
一键面试package main
import "fmt"
func C() {
panic("函数C中发生panic")
}
func B() {
C()
}
func A() {
defer func() {
if r := recover(); r != nil {
fmt.Println("在函数A中捕获到panic:", r)
}
}()
B()
}
func main() {
A()
fmt.Println("程序继续执行")
}
上述代码使用Go语言实现,在A
函数中通过defer
和recover
来捕获C
函数中可能发生的panic
。
C
函数故意触发一个panic
。B
函数调用C
函数。A
函数调用B
函数,并通过defer
语句注册一个匿名函数,这个匿名函数使用recover
来捕获panic
。如果捕获到panic
,则打印相关信息。- 在
main
函数中调用A
函数,在捕获panic
后程序可以继续执行后续代码。