global_error.go 531 B

1234567891011121314151617181920212223242526272829
  1. package middleware
  2. import (
  3. "runtime/debug"
  4. "github.com/gin-gonic/gin"
  5. "github.com/sirupsen/logrus"
  6. "gogs.daxia.dev/huanan/pkg.daxia.dev/webutils"
  7. )
  8. func GlobalError() gin.HandlerFunc {
  9. return func(ctx *gin.Context) {
  10. defer func() {
  11. if err := recover(); err != nil {
  12. _, isRespError := err.(webutils.RespError)
  13. if !isRespError {
  14. //这里重新抛出
  15. debug.PrintStack()
  16. logrus.Error(err)
  17. panic(err)
  18. } else {
  19. //什么都不做,吃掉这个异常
  20. }
  21. }
  22. }()
  23. ctx.Next()
  24. }
  25. }