| 1234567891011121314151617181920212223242526 |
- 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()
- }
- }
|