errorHandler.go 787 B

123456789101112131415161718192021222324252627282930
  1. package middleware
  2. import (
  3. . "gateway/common/gatecode"
  4. "gateway/core/logs"
  5. "github.com/gogf/gf/v2/errors/gcode"
  6. "github.com/gogf/gf/v2/errors/gerror"
  7. "github.com/gogf/gf/v2/net/ghttp"
  8. )
  9. // ErrorHandler 统一异常拦截中间件
  10. func ErrorHandler(r *ghttp.Request) {
  11. r.Middleware.Next()
  12. // 程序异常信息处理
  13. err := r.GetError()
  14. if err != nil {
  15. gCode := gerror.Code(err)
  16. if gCode == gcode.CodeNil { // 非gatecode异常
  17. gCode = gcode.New(int(OTHER_ERR_UNDEFINED), OTHER_ERR_UNDEFINED.String(), err.Error())
  18. }
  19. // 返回固定的友好信息
  20. r.Response.ClearBuffer()
  21. r.Response.Write(map[string]interface{}{
  22. "err_code": gCode.Code(),
  23. "err_msg": gCode.Message(),
  24. })
  25. }
  26. // 记录到日志文件并通知
  27. go logs.GReq.RecordLogAndNotice(r, err)
  28. }