go
runtime_error
ai_generated
true
panic: http: 服务 127.0.0.1:8080 时 panic: 运行时错误:索引越界
panic: http: panic serving 127.0.0.1:8080: runtime error: index out of range
ID: go/http-handler-panic-recovery
80%修复率
86%置信度
0证据数
2024-06-01首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 1.21 | active | — | — | — |
根因分析
处理请求时访问无效索引,未使用 recover 捕获,导致服务中断。
English
HTTP handler 中发生未捕获的 panic,导致服务器崩溃,默认 net/http 会恢复但记录日志。
解决方案
-
95% 成功率
在 handler 内部使用 defer recover() 并记录日志
-
90% 成功率
使用中间件统一处理 panic,返回 500 错误
无效尝试
常见但无效的做法:
-
70% 失败
连接会中断,且可能泄漏资源
-
90% 失败
recover 必须在 panic 发生的 goroutine 中调用,handler 外无效