Skip to content

Error Handling

All custom exceptions are importable from plot_finder.


Exception Hierarchy

Exception
├── ULDKError
│   └── PlotNotFoundError
├── GeocodeError
│   └── AddressNotFoundError
├── NothingFoundError
├── OverpassError
│   ├── OverpassTimeoutError
│   └── OverpassRateLimitError
├── OpenWeatherError
│   └── OpenWeatherAuthError
├── OpenMeteoError
├── GeoportalError
├── GDDKiAError
├── SOPOError
└── GugikError

Exceptions

Exception When
ULDKError Base error for ULDK API issues
PlotNotFoundError No parcel found for given TERYT ID or coordinates
GeocodeError Nominatim geocoding request failed
AddressNotFoundError No results for the given address
NothingFoundError No places found within the given radius
OverpassError Overpass API (OpenStreetMap) request failed
OverpassTimeoutError Overpass API timed out — server is busy
OverpassRateLimitError Overpass API rate limit exceeded (HTTP 429)
OpenWeatherError OpenWeatherMap API request failed
OpenWeatherAuthError Missing or invalid OpenWeatherMap API key
OpenMeteoError Open-Meteo API request failed or timed out
GeoportalError Geoportal WMS/WFS request failed
GDDKiAError GDDKiA noise map request failed
SOPOError PIG-PIB SOPO landslide API request failed
GugikError GUGiK integration portal request failed

Usage

Handling plot search errors

from plot_finder import Plot, PlotNotFoundError

try:
    plot = Plot(plot_id="000000_0.0000.0000")
except PlotNotFoundError:
    print("Parcel not found")

Handling address geocoding errors

from plot_finder import Plot, AddressNotFoundError, GeocodeError

try:
    plot = Plot(address="nonexistent address 12345")
except AddressNotFoundError:
    print("Address not found")
except GeocodeError:
    print("Geocoding service error")

Handling analyzer errors

from plot_finder import (
    Plot,
    PlotAnalyzer,
    NothingFoundError,
    OverpassTimeoutError,
    OverpassRateLimitError,
)

plot = Plot(plot_id="141201_1.0001.6509")
analyzer = PlotAnalyzer(plot)

try:
    places = analyzer.education()
except NothingFoundError:
    print("No schools nearby — try a larger radius")
except OverpassTimeoutError:
    print("OpenStreetMap server is busy — try again later")
except OverpassRateLimitError:
    print("Too many requests — wait a moment")

Catch all Overpass errors

from plot_finder import OverpassError

try:
    places = analyzer.transport()
except OverpassError as e:
    # Catches OverpassTimeoutError and OverpassRateLimitError too
    print(f"OpenStreetMap error: {e}")