Skip to main content

Error Types

The Narada SDK raises specific exceptions for different error conditions. All errors inherit from NaradaError.
from narada import (
    NaradaError,
    NaradaTimeoutError,
    NaradaUnsupportedBrowserError,
    NaradaExtensionMissingError,
    NaradaExtensionUnauthenticatedError,
    NaradaInitializationError
)

Error Handling Examples

Look at the following examples to see how to handle different errors.
Raised when operations exceed timeout limits.
from narada import NaradaTimeoutError

try:
    response = await window.agent(
        prompt='find a specific element',
        timeout=30
    )
except NaradaTimeoutError:
    print("Operation timed out. Try increasing timeout or simplifying the task.")
Raised when using an unsupported browser.
from narada import NaradaUnsupportedBrowserError

try:
    async with Narada() as narada:
        window = await narada.open_and_initialize_browser_window()
except NaradaUnsupportedBrowserError:
    print("Please use Chrome browser. Other browsers are not supported.")
Raised when the Chrome extension is not installed.
from narada import NaradaExtensionMissingError

try:
    async with Narada() as narada:
        window = await narada.open_and_initialize_browser_window()
except NaradaExtensionMissingError:
    print("Narada extension not found. Please install it from the Chrome Web Store.")
Raised when the extension is not signed in.
from narada import NaradaExtensionUnauthenticatedError

try:
    async with Narada() as narada:
        window = await narada.open_and_initialize_browser_window()
except NaradaExtensionUnauthenticatedError:
    print("Please sign in to your Narada account in the Chrome extension.")
Raised when SDK initialization fails.
from narada import NaradaInitializationError

try:
    async with Narada() as narada:
        window = await narada.open_and_initialize_browser_window()
except NaradaInitializationError:
    print("Failed to initialize SDK. Check your API key and internet connection.")

Retry Pattern

For transient errors, implement retry logic:
import asyncio
from narada import Narada, NaradaTimeoutError

async def retry_operation(narada, prompt, max_retries=3):
    for attempt in range(max_retries):
        try:
            window = await narada.open_and_initialize_browser_window()
            return await window.agent(prompt=prompt)
        except NaradaTimeoutError:
            if attempt == max_retries - 1:
                raise
            await asyncio.sleep(2 ** attempt)  # Exponential backoff

async def main():
    async with Narada() as narada:
        response = await retry_operation(
            narada,
            '/Operator search for "python tutorial"'
        )
        print(response)

asyncio.run(main())

Best Practices

Catch Specific Errors

Handle specific error types rather than generic exceptions

Implement Retries

Use retry logic for timeout and initialization errors

Log Errors

Log errors with context for debugging

Graceful Degradation

Design fallback behavior when automation fails
Most errors are recoverable. Check the error message and implement appropriate retry or fallback logic.
I