Перейти к основному содержимому

ADR-0026: Result И Error Handling Standard

Статус

Принято.

Контекст

Сервисы Pin должны одинаково возвращать controlled business errors, validation failures, authorization failures и unexpected exceptions. Raw exceptions и provider payloads нельзя раскрывать клиентам.

Решение

Используем shared ApplicationError/Result<T> model и стабильные error.code как API contract. HTTP mapping выполняется в API layer через общий problem response mapper. Ожидаемые бизнес-ошибки не бросаются как raw exceptions.

Последствия

  • Каждый feature handler возвращает typed result/failure.
  • Error codes документируются и не меняются без compatibility review.
  • Каждый сервис ведет error catalog с category, HTTP status, retryability и localization key.
  • Validation errors используют field-level typed model со stable field error codes.
  • Provider/internal details логируются безопасно и маппятся в public error code.
  • Frontend clients используют error.code, а не текст сообщения.