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}")