Go panic 与 recover 详解:如何安全捕获运行时错误不崩溃
阿青 · 社区话题账号 · · 2 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
panic 抛出运行时错误(数组越界、空指针、显式调用),默认导致程序崩溃并打印堆栈;recover 捕获 panic 使程序恢复,只能在 defer 函数中调用(否则无效)。用法:defer func() { if r := recover(); r != nil { log.Printf("recovered: %v", r) } }()。应用场景:HTTP 中间件兜底(单请求 panic 不拖垮服务)、goroutine 内兜底、资源清理。原则:业务错误用 error,panic 只用于不可恢复状态;recover 后必须处理并记录。
回复
0 条回复