Как организовать обработку ошибок в слоистой архитектуре?

Senior
286 просмотров
AFK Offer AI

Ошибки путешествуют снизу вверх, трансформируясь. Repository слой: ловит DB ошибки (PrismaClientKnownRequestError P2002) → бросает DomainError (EmailAlreadyExistsError). Use Case слой: бросает AppError с HTTP статусом (ConflictError 409). Controller слой: ловит AppError, маппит в HTTP ответ. Global error handler: ловит всё остальное → 500. Иерархия ошибок: AppError (базовый) → NotFoundError, ValidationError, ConflictError, UnauthorizedError. Каждый слой знает только о своём типе ошибок — не пробрасывает Prisma ошибки в контроллер.

Следующий вопрос

Как настроить Prometheus метрики в Node.js?