У меня есть следующие обработчики ошибок:
@api.errorhandler(DatabaseException)
def handle_database_exception(database_error):
return database_error.query_error, 400
@api.errorhandler(ValidationException)
def handle_validation_exception(validation_error):
return {'fields': validation_error.body_error}, 400
Это простые классы:
class ValidationException(Exception):
def __init__(self, body_error=None, missing_files=None):
Exception.__init__(self, "Validation failed")
self.body_error = body_error
if missing_files is not None:
for missing_file in missing_files:
self.body_error[missing_file] = ['required file']
class DatabaseException(Exception):
def __init__(self, details):
Exception.__init__(self, "Database Error")
self.query_error = details
Вот моя проблема: если я вызываю поднять компонент DatabaseException в любом из моих маршрутов, онпроваливается, и я получаю шаблон 500 из колбы.
Действительно забавно то, что реализованное ранее исключение ValidationException прекрасно работает.
Я подробно рассказал о том, что происходит, когдаВозникает ValidationException, он проходит через response.py и попадает в обработчик ошибок.К сожалению, я не могу понять все, что происходит внутри колбы, но в отладке исключение DatabaseException определенно пошло по другому пути.
Я ожидаю, что вызовутся обработчики ошибок.Если я вызову исключение DatabaseException на одном из моих маршрутов, он должен быть вызван.