Skip to content

Обработка ошибок

Kodzero SDK предоставляет специальные классы ошибок для удобной обработки различных исключительных ситуаций.

Типы ошибок

KodzeroApiError

Возникает при ошибках API-запросов (4xx, 5xx ответы от сервера):

ts
class KodzeroApiError extends Error {
  name: 'KodzeroApiError'
  url: string           // URL запроса
  statusCode: number    // HTTP код ответа
  message: string       // Сообщение об ошибке
  details: string       // Дополнительные детали
}

KodzeroOptionsError

Возникает, если параметры (инпут) для создания или инициализации модели заданы некорректно (например, отсутствует обязательное поле или неверный тип параметра).

ts
class KodzeroOptionsError extends Error {
  name: 'KodzeroValidationError'
  message: string       // Сообщение об ошибке
  errors: string[]      // Массив ошибок валидации
}

Обработка ошибок API

Базовый пример

js
try {
  const invoice = await Invoice.get('non_existent_id')
} catch (error) {
  if (error.name === 'KodzeroApiError') {
    console.error('API ошибка:', error.message)
    console.error('HTTP код:', error.statusCode)
    console.error('URL:', error.url)
  } else {
    console.error('Неизвестная ошибка:', error)
  }
}

Обработка по HTTP-кодам

js
try {
  await kodzero.auth.login({ email, password })
} catch (error) {
  if (error.name === 'KodzeroApiError') {
    switch (error.statusCode) {
      case 400:
        // Неверный запрос
        alert('Проверьте введённые данные')
        break
      case 401:
        // Не авторизован
        alert('Неверный email или пароль')
        break
      case 403:
        // Доступ запрещён
        alert('Доступ запрещён')
        break
      case 404:
        // Не найдено
        alert('Документ не найден')
        break
      case 429:
        // Слишком много запросов
        alert('Слишком много попыток. Подождите.')
        break
      case 500:
        // Ошибка сервера
        alert('Ошибка сервера. Попробуйте позже.')
        break
      default:
        alert(`Ошибка: ${error.message}`)
    }
  }
}

test