25 lines
432 B
Go
25 lines
432 B
Go
package middleware
|
|
|
|
import (
|
|
"base-framework/pkg/reponse"
|
|
"base-framework/pkg/router"
|
|
"log"
|
|
"runtime/debug"
|
|
)
|
|
|
|
func Recovery() router.HandlerFunc {
|
|
return func(c *router.Context) {
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
// 打印 panic 信息和堆栈
|
|
log.Printf("[Recovery] panic recovered: %v\n%s", err, debug.Stack())
|
|
|
|
reponse.Error(c).Send()
|
|
}
|
|
}()
|
|
|
|
// 调用后续 handler
|
|
c.Next()
|
|
}
|
|
}
|