intermediate

Error handling

Делайте failures explicit, typed где полезно, logged на правильной boundary и recoverable или user-facing по deliberate policy.

Делайте сбои явными: typed errors или result types на границах, осмысленные сообщения для операторов, безопасный user-facing текст без утечки internals. Лог один раз на boundary с correlation ID; без catch-and-ignore. Различайте retryable infrastructure errors и validation bugs.

Централизуйте mapping в HTTP status или UI toasts; domain бросает semantic errors, transport переводит.

На интервью: error flow для payment failure — retry vs fatal decline.

Типовые ошибки: пустой catch; stringly-typed errors; double logging; stack traces пользователю.

Компромисс — многословные error types против отлаживаемости и единого UX.

Чеклист:

  • Semantic errors в domain.
  • Перевод на IO boundaries.
  • Лог с контекстом; без тихого проглатывания.