package middleware

import (
	"runtime/debug"

	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
	"gogs.daxia.dev/huanan/pkg.daxia.dev/webutils"
)

func GlobalError() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		defer func() {
			if err := recover(); err != nil {
				_, isRespError := err.(webutils.RespError)
				if !isRespError {
					//这里重新抛出
					debug.PrintStack()
					logrus.Error(err)
					panic(err)
				} else {
					//什么都不做，吃掉这个异常
				}
			}
		}()

		ctx.Next()
	}
}
