Вопрос проверяет умение связывать техническую обработку ошибок с требованиями бизнеса и пользовательским опытом.
Ошибки внешних сервисов нужно обрабатывать с учётом их влияния на бизнес-результат. Не все ошибки критичны и не все требуют падения запроса. Важно различать ошибки, при которых можно деградировать функциональность. Бизнес-логика определяет, что можно вернуть пользователю и когда стоит повторить попытку. Техническая обработка должна подчиняться этим правилам.
Обработка ошибок внешних сервисов — это не только техническая задача, но и часть бизнес-логики.
Перед перечислением важно зафиксировать: одинаковая техническая ошибка может иметь разный бизнес-эффект.
Критические
невозможно выполнить основную операцию
требуется явный отказ
Допустимые
второстепенные данные
возможна деградация
Временные
можно повторить позже
Фатальные
повтор не имеет смысла
Основной путь
заказ, платёж, авторизация
Вспомогательные данные
рекомендации
аналитика
UX-ожидания
быстрый ответ важнее полноты данных
try:
price = await get_price()
except ExternalServiceError:
price = default_price()
Единая стратегия для всех ошибок
Технические исключения leaking наружу
Игнорирование бизнес-приоритетов
Обработка ошибок внешних сервисов должна проектироваться от бизнес-логики, а не от технических исключений. Это позволяет системе быть устойчивой и предсказуемой для пользователей.