pyceo/ceod/api/error_handlers.py

24 lines
671 B
Python

import traceback
from flask.app import Flask
from werkzeug.exceptions import HTTPException
from ceo_common.logger_factory import logger_factory
__all__ = ['register_error_handlers']
logger = logger_factory(__name__)
def register_error_handlers(app: Flask):
"""Register error handlers for the application."""
app.register_error_handler(Exception, generic_error_handler)
def generic_error_handler(err: Exception):
"""Return JSON for internal server errors."""
# pass through HTTP errors
if isinstance(err, HTTPException):
return err
logger.error(traceback.format_exc())
return {'error': type(err).__name__ + ': ' + str(err)}, 500