github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/middleware/recovery.go (about) 1 package middleware 2 3 import "net/http" 4 5 // NewRecovery creates a new instance of Recovery 6 func NewRecovery(recoverFunc func(w http.ResponseWriter, r *http.Request, err interface{})) func(http.Handler) http.Handler { 7 return func(handler http.Handler) http.Handler { 8 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 9 defer func() { 10 if err := recover(); err != nil { 11 recoverFunc(w, r, err) 12 } 13 }() 14 15 handler.ServeHTTP(w, r) 16 }) 17 } 18 }