recovery.go
461 Bytes
package middleware
import (
"net/http"
)
func Recovery(next http.Handler) http.Handler {
return recoverMiddleware(next)
}
func recoverMiddleware(next http.Handler) http.Handler {
fn := func(w http.ResponseWriter, r *http.Request) {
defer func() {
if rvr := recover(); rvr != nil {
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
}
}()
next.ServeHTTP(w, r)
}
return http.HandlerFunc(fn)
}