Files
ai_job_chat_agent/internal/api/middleware/recovery.go
2026-01-12 11:33:43 +08:00

36 lines
636 B
Go

package middleware
import (
"log"
"net/http"
"qd-sc/internal/model"
"runtime/debug"
"github.com/gin-gonic/gin"
)
// Recovery Panic恢复中间件
func Recovery() gin.HandlerFunc {
return func(c *gin.Context) {
defer func() {
if err := recover(); err != nil {
// 打印堆栈信息
stack := debug.Stack()
log.Printf("[PANIC] %v\n%s", err, string(stack))
// 返回500错误
c.JSON(http.StatusInternalServerError, model.ErrorResponse{
Error: model.ErrorDetail{
Message: "服务器内部错误",
Type: "internal_server_error",
},
})
c.Abort()
}
}()
c.Next()
}
}