package middleware import ( "app/commons/constant" "app/commons/core" "github.com/gin-gonic/gin" "runtime" ) // Recovery 全局错误恢复中间件 func Recovery() gin.HandlerFunc { return func(c *gin.Context) { defer func() { if err := recover(); err != nil { // 打印错误堆栈信息 stack := make([]byte, 4096) length := runtime.Stack(stack, false) core.JobLog.Errorf("[Recovery] panic recovered:\n%s\n%s", err, stack[:length]) // 设置响应头,确保返回 JSON 格式 core.Resp(c, constant.ErrorInfo) c.Abort() } }() c.Next() } }