面试题答案
一键面试package main
import (
"log"
)
func criticalFunction() {
// 模拟可能会panic的操作
panic("模拟一个panic异常")
}
func main() {
defer func() {
if r := recover(); r != nil {
log.Printf("捕获到panic: %v", r)
// 这里可以进行更多错误处理,例如发送错误信息到监控系统等
}
}()
criticalFunction()
// 即使criticalFunction中发生panic,后续代码仍可执行
log.Println("程序继续执行")
}
上述代码中,在main
函数中使用defer
关键字定义了一个匿名函数,这个匿名函数调用recover
函数来捕获可能发生的panic
。如果criticalFunction
函数中发生panic
,recover
会捕获到该异常,记录相关错误信息到日志中,并且程序不会崩溃,继续执行defer
之后的代码。