github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume4/section3/gopherface/middleware/panicrecovery.go (about) 1 package middleware 2 3 import ( 4 "log" 5 "net/http" 6 ) 7 8 func PanicRecoveryHandler(next http.Handler) http.Handler { 9 10 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 11 12 defer func() { 13 14 if err := recover(); err != nil { 15 log.Printf("Encountered panic: %+v", err) 16 http.Error(w, http.StatusText(500), 500) 17 } 18 19 }() 20 21 next.ServeHTTP(w, r) 22 23 }) 24 25 }