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.
- Лог с контекстом; без тихого проглатывания.