YoukaRequestError для HTTP-ошибок и ошибок валидации, и YoukaTaskError для асинхронных задач, завершившихся в состоянии, отличном от успешного. Оба расширяют Error и содержат структурированные поля, чтобы вы могли ветвить логику по коду, статусу и возможности повтора.
YoukaRequestError
Выбрасывается при HTTP-ошибках, ошибках валидации запроса и некорректных ответах.
Поля
Машиночитаемый код ошибки, например
INVALID_REQUEST, UNAUTHORIZED,
UPLOAD_FAILED.Человекочитаемое описание.
HTTP-код статуса, если доступен.
true, если SDK считает, что ошибку имеет смысл повторить (лимиты запросов,
временные ошибки сервера, идемпотентное повторение в процессе).Детали от сервера; обычно список проблем Zod для ошибок валидации.
Частые коды
| Код | Причина | Повторяемо? |
|---|---|---|
INVALID_REQUEST | Тело запроса не прошло проверку схемы до отправки. | No |
UNAUTHORIZED | Отсутствует или неверный API key. | No |
NOT_FOUND | Ресурс не существует или у вас нет доступа. | No |
CONFLICT | Конфликт версий (HTTP 409). | Yes |
TOO_MANY_REQUESTS | Превышен лимит запросов (HTTP 429). | Yes |
INTERNAL_SERVER_ERROR | Временный сбой сервера (HTTP 500). | Yes |
IDEMPOTENT_REPLAY_IN_PROGRESS | Исходный запрос всё ещё выполняется с тем же ключом идемпотентности (HTTP 202). | Yes |
INVALID_RESPONSE | Сервер вернул тело, не соответствующее ожидаемой схеме. | No |
UPLOAD_FAILED | Загрузка по подписанному URL вернула не-2xx. | Зависит от status |
YoukaTaskError
Выбрасывается из client.tasks.wait(...), client.projects.wait(...) и client.exports.wait(...), когда базовая задача или экспорт завершается в failed, cancelled или timed-out.
Поля
Напрямую соответствует конечному статусу задачи.
Либо сообщение об ошибке задачи, предоставленное сервером, либо сгенерированное резервное.
Конечный статус задачи.
Полная полезная нагрузка задачи на момент сбоя. Полезно для логирования и
пользовательских сообщений об ошибках.
Шаблон повторов
Комбинируйтеretryable с ключом идемпотентности, чтобы построить безопасный цикл повторов:
Прерывание и отмена
Прерывание запроса выбрасывает стандартныйAbortError, а не YoukaRequestError. Проверяйте его явно:
Что дальше
- Tasks — хелперы ожидания и продвинутое опрашивание задач
- Authentication — параметры конструктора и сигналы
- API errors — те же коды в «сыром» HTTP
