Files
syncthing/Godeps/_workspace/src/github.com/codegangsta/martini/recovery.go
T
2014-03-22 21:33:18 +01:00

22 lines
449 B
Go

package martini
import (
"log"
"net/http"
"runtime/debug"
)
// Recovery returns a middleware that recovers from any panics and writes a 500 if there was one.
func Recovery() Handler {
return func(res http.ResponseWriter, c Context, logger *log.Logger) {
defer func() {
if err := recover(); err != nil {
res.WriteHeader(http.StatusInternalServerError)
logger.Printf("PANIC: %s\n%s", err, debug.Stack())
}
}()
c.Next()
}
}