github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume2/section2/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  }