feat: 合并Gin_Vue
This commit is contained in:
40
src/framework/errorcatch/errorcatch.go
Normal file
40
src/framework/errorcatch/errorcatch.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package errorcatch
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"ems.agt/src/framework/config"
|
||||
"ems.agt/src/framework/logger"
|
||||
"ems.agt/src/framework/vo/result"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// ErrorCatch 全局异常捕获
|
||||
func ErrorCatch() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
defer func() {
|
||||
// 在这里处理 Panic 异常,例如记录日志或返回错误信息给客户端
|
||||
if err := recover(); err != nil {
|
||||
logger.Errorf("发生了 Panic 异常: %v", err)
|
||||
|
||||
// 返回错误响应给客户端
|
||||
if config.Env() == "prod" {
|
||||
c.JSON(500, result.ErrMsg("服务器内部错误"))
|
||||
} else {
|
||||
// 通过实现 error 接口的 Error() 方法自定义错误类型进行捕获
|
||||
switch v := err.(type) {
|
||||
case error:
|
||||
c.JSON(500, result.ErrMsg(v.Error()))
|
||||
default:
|
||||
c.JSON(500, result.ErrMsg(fmt.Sprint(err)))
|
||||
}
|
||||
}
|
||||
|
||||
c.Abort() // 停止执行后续的处理函数
|
||||
}
|
||||
}()
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user