package web import ( "errors" "log/slog" "platform/web/common" "reflect" "github.com/gofiber/fiber/v2" ) func ErrorHandler(c *fiber.Ctx, err error) error { var code int var message string var fiberErr *fiber.Error var serviceErr common.ServiceErr if errors.As(err, &fiberErr) { code = fiberErr.Code message = fiberErr.Message } else if errors.As(err, &fiberErr) { code = serviceErr.Code() message = serviceErr.Error() } else { code = fiber.StatusInternalServerError message = "服务器异常" slog.Debug("未处理的异常", slog.String("type", reflect.TypeOf(err).Name()), slog.String("error", err.Error())) } c.Set(fiber.HeaderContentType, fiber.MIMETextPlainCharsetUTF8) return c.Status(code).SendString(message) }