2026-01-08 01:00:26 +10:30
|
|
|
"""Base exception classes."""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BaseAPIException(Exception):
|
|
|
|
|
"""Base exception for all API errors."""
|
|
|
|
|
|
|
|
|
|
status_code = 500
|
|
|
|
|
error_type = "INTERNAL_ERROR"
|
|
|
|
|
message = "An unexpected error occurred"
|
|
|
|
|
|
|
|
|
|
def __init__(self, message=None, error_details=None):
|
|
|
|
|
"""
|
|
|
|
|
Initialize exception.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
message: Custom error message
|
|
|
|
|
error_details: Additional error details dictionary
|
|
|
|
|
"""
|
2026-02-27 21:59:01 +05:45
|
|
|
super().__init__(self.message)
|
2026-01-08 01:00:26 +10:30
|
|
|
if message:
|
|
|
|
|
self.message = message
|
2026-02-27 21:59:01 +05:45
|
|
|
super().__init__(message) # update args so str(e) works
|
2026-01-08 01:00:26 +10:30
|
|
|
self.error_details = error_details or {}
|
|
|
|
|
|
|
|
|
|
def to_dict(self):
|
|
|
|
|
"""Convert exception to dictionary for API response."""
|
|
|
|
|
return {
|
|
|
|
|
"error_type": self.error_type,
|
|
|
|
|
"message": self.message,
|
|
|
|
|
"details": self.error_details,
|
|
|
|
|
"status_code": self.status_code,
|
|
|
|
|
}
|