Go HTTP panic recovery middleware
A simple Go HTTP panic recovery middleware implemention.
Last updated on: 2024-12-29
package httpmux
import "net/http"
type PanicRecoveryHandler func(w http.ResponseWriter, r *http.Request, err any)
func NewPanicRecoveryMiddleware(onPanic PanicRecoveryHandler) Middleware {
if onPanic == nil {
onPanic = func(_ http.ResponseWriter, _ *http.Request, err any) { panic(err) }
}
return func(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer func() {
if err := recover(); err != nil {
onPanic(w, r, err)
}
}()
h.ServeHTTP(w, r)
})
}
}