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

其他格式: JSON · Markdown 中文 · English
80%修复率
86%置信度
0证据数
2024-06-01首次发现

版本兼容性

版本状态引入弃用备注
1.21 active

根因分析

处理请求时访问无效索引,未使用 recover 捕获,导致服务中断。

English

HTTP handler 中发生未捕获的 panic,导致服务器崩溃,默认 net/http 会恢复但记录日志。

generic

解决方案

  1. 95% 成功率
    在 handler 内部使用 defer recover() 并记录日志
  2. 90% 成功率
    使用中间件统一处理 panic,返回 500 错误

无效尝试

常见但无效的做法:

  1. 70% 失败

    连接会中断,且可能泄漏资源

  2. 90% 失败

    recover 必须在 panic 发生的 goroutine 中调用,handler 外无效