nf/middleware.go

24 lines
431 B
Go
Raw Normal View History

2024-01-12 19:18:33 +08:00
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()
}
}