面试真题

Go · 中等 · 字节跳动

panic与匿名函数的异常捕获和处理

中等 Go 🎤 字节跳动
参考答案
结论:Go中panic触发运行时错误导致程序终止,可通过在defer中调用recover结合匿名函数捕获处理。原理:panic会中断当前函数执行,沿调用栈向上抛出,执行延迟调用(defer);若在defer函数(常写为匿名函数)中调用recover(),可捕获panic值并恢复正常流程。示例:func safeRun(){ defer func(){ if r:=recover(); r!=nil { fmt.Println("recovered:",r) } }(); panic("error") }()。注意:recover必须在defer中直接调用才有效,否则返回nil;匿名函数便于封装可能panic的代码块。
题目整理自公开面经,答案由校招宝自研生成,仅供参考