fix(middleware): 修复panic恢复处理逻辑

- 统一错误响应结构,使用response.Error进行处理
- 添加字符串类型错误的处理分支
- 为未知错误类型设置默认错误消息
- 确保所有panic情况都会调用End方法结束响应
- 保持原有日志记录功能
main v1.0.00015
black1552 2026-02-03 16:40:50 +08:00
parent 53aa8367dc
commit edff2f198a
1 changed files with 6 additions and 2 deletions

View File

@ -12,12 +12,16 @@ func ErrorHandler() gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
defer func() { defer func() {
if err := recover(); err != nil { if err := recover(); err != nil {
res := response.Error(c).SetCode(http.StatusInternalServerError)
switch e := err.(type) { switch e := err.(type) {
case string:
res = res.SetMsg(e)
case error: case error:
response.Error(c).SetCode(http.StatusInternalServerError).SetMsg(e.Error()) res = res.SetMsg(e.Error())
default: default:
log.Error(c.Errors.Last().Error()) res = res.SetMsg("服务器内部异常,请稍后重试")
} }
res.End()
log.Error("发生panic=》", "path", c.Request.URL.Path, ",method:", c.Request.Method, ",", err) log.Error("发生panic=》", "path", c.Request.URL.Path, ",method:", c.Request.Method, ",", err)
c.Abort() c.Abort()
} }