Skip to content

Errors

Библиотека использует два типа исключений.

CloudTipsAPIError

Ошибка запроса к CloudTips API (HTTP-уровень).

class CloudTipsAPIError(Exception):
    status_code: int   # HTTP-статус
    detail: object     # тело ответа (dict или str)

Пример

from cloudtips import CloudTipsAPIError

try:
    async with CloudTipsClient(auth) as client:
        donations = await client.get_all_donations()
except CloudTipsAPIError as e:
    print(f"Ошибка API (HTTP {e.status_code}): {e.detail}")

CloudTipsAuthError

Ошибка аутентификации — возникает при неудачном обновлении токенов.

class CloudTipsAuthError(Exception):
    ...

Пример

from cloudtips import CloudTipsAuthError

try:
    async with CloudTipsClient(auth) as client:
        await client.get_me()
except CloudTipsAuthError as e:
    print(f"Проблема с аутентификацией: {e}")
    # Необходимо заново получить токены

RuntimeError — сессия не открыта

Если вы забыли открыть сессию:

# Неправильно
client = CloudTipsClient(auth)
await client.get_me()  # RuntimeError: Сессия не открыта

# Правильно
async with CloudTipsClient(auth) as client:
    await client.get_me()

Полный пример обработки ошибок

from cloudtips import CloudTipsAuth, CloudTipsClient, CloudTipsAuthError, CloudTipsAPIError

try:
    async with CloudTipsClient(auth) as client:
        donations = await client.get_all_donations()
        cards     = await client.get_cards()
        summary   = await client.get_accumulation_summary()
except CloudTipsAuthError as e:
    print(f"Ошибка токена: {e}")
    print("Необходимо заново получить токены из браузера.")
except CloudTipsAPIError as e:
    print(f"Ошибка API {e.status_code}: {e.detail}")
except Exception as e:
    print(f"Непредвиденная ошибка: {e}")