Files
gatehouse-api/gatehouse_app/exceptions/base.py
T

36 lines
1.1 KiB
Python
Raw Normal View History

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"
2026-03-29 23:14:20 +05:45
def __init__(self, message=None, error_details=None, status_code=None):
2026-01-08 01:00:26 +10:30
"""
Initialize exception.
Args:
message: Custom error message
error_details: Additional error details dictionary
2026-03-29 23:14:20 +05:45
status_code: Override the class-level HTTP status code
2026-01-08 01:00:26 +10:30
"""
super().__init__(self.message)
2026-01-08 01:00:26 +10:30
if message:
self.message = message
super().__init__(message) # update args so str(e) works
2026-01-08 01:00:26 +10:30
self.error_details = error_details or {}
2026-03-29 23:14:20 +05:45
if status_code is not None:
self.status_code = status_code
2026-01-08 01:00:26 +10:30
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,
}