Skip to main content

Error Handling

All SDK exceptions inherit from QarionError and carry structured information about the failure.

Exception Hierarchy

Exception Reference

ExceptionHTTP StatusWhen It's Raised
QarionErrorBase class for all SDK errors
AuthenticationError401Invalid or missing API key
PermissionDeniedError403Insufficient permissions for the operation
NotFoundError404Resource does not exist
ValidationError400 / 422Invalid request payload
ConflictError409Resource conflict (e.g., duplicate slug)
ServerError5xxPlatform-side failure
TimeoutErrorRequest exceeded the configured timeout

Error Attributes

Every exception carries two useful attributes:

AttributeTypeDescription
status_codeint | NoneHTTP status code (if applicable)
detailAnyDetailed error info from the API response

Usage Patterns

Catching Specific Errors

from qarion import QarionClient, NotFoundError, AuthenticationError, ValidationError

async with QarionClient(api_key="qk_...") as client:
try:
product = await client.products.get("my-space", "nonexistent")
except NotFoundError as e:
print(f"Not found (HTTP {e.status_code}): {e.detail}")
except AuthenticationError:
print("Invalid API key")
except ValidationError as e:
print(f"Bad request: {e.detail}")

Catching All SDK Errors

from qarion import QarionClient, QarionError

async with QarionClient() as client:
try:
result = await client.quality.trigger("my-space", "check-slug")
except QarionError as e:
print(f"SDK error [{e.status_code}]: {e}")

Retry on Conflict

from qarion import QarionSyncClient, ConflictError

with QarionSyncClient() as client:
try:
product = client.products.create(
"my-space", name="My Product", slug="my-product"
)
except ConflictError:
# Slug already exists — fetch the existing product instead
product = client.products.get("my-space", "my-product")

Imports

All exceptions are importable from the top-level package:

from qarion import (
QarionError,
AuthenticationError,
PermissionDeniedError,
NotFoundError,
ValidationError,
ConflictError,
ServerError,
TimeoutError,
)