Skip to main content

Exception Hierarchy

All SDK exceptions extend eu.law4devs.sdk.exceptions.Law4DevsException, which itself extends RuntimeException.
Every exception exposes a getStatusCode() method:

Catching Specific Errors


Automatic Retry

The SDK automatically retries on 429 Too Many Requests and 5xx Server Error responses using exponential backoff:
AttemptWait
1st retry1 second
2nd retry2 seconds
3rd retry4 seconds
After maxRetries (default 3) attempts, the exception is re-thrown. To disable retries, set maxRetries(0):
NotFoundError (404) and ValidationError (400) are never retried — they represent client errors that will not resolve by retrying.

Network Errors

Connection failures (timeout, DNS, SSL) throw Law4DevsException with a message describing the failure:

Errors in iter() Loops

Exceptions can be thrown mid-iteration if a page request fails. Wrap iter() loops in a try/catch:

Best Practices

  • Always catch Law4DevsException as a fallback to handle unexpected errors
  • Wrap iter() loops in a try/catch — exceptions can occur mid-iteration if a page request fails
  • Use getStatusCode() to distinguish error types when handling Law4DevsException generically
  • For batch processing, implement a retry strategy at the application level if you need finer control than the built-in retry
  • Prefer specific exception types (NotFoundError, RateLimitError) over the base class for cleaner error handling