go runtime_error ai_generated true

panic: http: panic serving 127.0.0.1:8080: runtime error: index out of range

ID: go/http-handler-panic-recovery

Also available as: JSON · Markdown · 中文
80%Fix Rate
86%Confidence
0Evidence
2024-06-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1.21 active

Root Cause

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

generic

中文

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

Workarounds

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

Dead Ends

Common approaches that don't work:

  1. 70% fail

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

  2. 90% fail

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