From 7bbd2836a67de9e8151237b58e93dab51cdc8035 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Wed, 26 Feb 2025 17:48:44 -0300 Subject: [PATCH] feat(smalltrip,exceptions): PanicMiddleware to recover from unexcepted panics --- smalltrip/exceptions/middleware.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/smalltrip/exceptions/middleware.go b/smalltrip/exceptions/middleware.go index 061dfa9..245283d 100644 --- a/smalltrip/exceptions/middleware.go +++ b/smalltrip/exceptions/middleware.go @@ -52,6 +52,20 @@ func Middleware(options ...MiddlewareOption) middleware.Middleware { }) } +func PanicMiddleware() middleware.Middleware { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + defer func() { + if r := recover(); r != nil { + err := fmt.Errorf("panic recovered: %+v", r) + InternalServerError(err).ServeHTTP(w, req) + } + }() + next.ServeHTTP(w, req) + }) + } +} + var defaultTemplate = template.Must(template.New("xx-small-trip-default-Exception-template").Parse(` Status: {{ .Status }} Code: {{ .Code }}