package middleware import ( . "gateway/common/gatecode" "gateway/core/logs" "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/net/ghttp" ) // ErrorHandler 统一异常拦截、提醒,及日志打印中间件 func ErrorHandler(r *ghttp.Request) { r.Middleware.Next() // 程序异常信息处理 err := r.GetError() if err != nil { gCode := gerror.Code(err) if gCode == gcode.CodeNil { // 非定义异常 gCode = gcode.New(int(OTHER_ERR_UNDEFINED), OTHER_ERR_UNDEFINED.String(), err.Error()) err = gerror.NewCode(gCode, "非定义异常") } // 返回固定的友好信息 r.Response.ClearBuffer() r.Response.Write(map[string]interface{}{ "err_code": gCode.Code(), "err_msg": gCode.Message(), }) } // 记录到日志文件并通知 go logs.GReq.RecordLogAndNotice(r, err) }