package nf import ( "fmt" "os" "runtime/debug" ) func NewRecover(enableStackTrace bool) HandlerFunc { return func(c *Ctx) error { defer func() { if r := recover(); r != nil { if enableStackTrace { os.Stderr.WriteString(fmt.Sprintf("recovered from panic: %v\n%s\n", r, debug.Stack())) } else { os.Stderr.WriteString(fmt.Sprintf("recovered from panic: %v\n", r)) } } }() return c.Next() } }