使用 Flask 错误处理程序立即捕获任何 Werkzeug 异常
Catch any Werkzeug exceptions at once with Flask error handler
我找不到如何使用 Flask 错误处理程序捕获任何 Werkzeug 异常。
以下处理程序,return json 状态为 500 的应用程序抛出的任何异常(专用错误)不是从 Werkzeug 引发的。
@opendataApp.errorhandler(Exception)
def handleException(error):
result = {
'error': {
'message': str(error)
# ...
}
}
return result, 500
我可以使用以下方法路由特定的 Werkzeug 错误:
@opendataApp.errorhandler(404)
或:
@opendataApp.errorhandler(NotFound)
装饰器,但以下不起作用:
@opendataApp.errorhandler(HTTPException)
它不处理任何 Werkzeug 错误。
这就像 Flask Error Handler 只想知道 Werkzeug 的顶部 class 而不是从它的继承树中推断。但我知道它是有能力的,因为 Exception
处理程序捕获任何内置的 subclassed 错误(例如 NotImplementedError
)。
所以我的问题是:如何使用 Flask 错误处理程序立即捕获 Werkzeug 异常?
至少升级到 Flask 1.0,这允许 adding an error handler for the base HTTPException
。
pip install -U flask
我找不到如何使用 Flask 错误处理程序捕获任何 Werkzeug 异常。
以下处理程序,return json 状态为 500 的应用程序抛出的任何异常(专用错误)不是从 Werkzeug 引发的。
@opendataApp.errorhandler(Exception)
def handleException(error):
result = {
'error': {
'message': str(error)
# ...
}
}
return result, 500
我可以使用以下方法路由特定的 Werkzeug 错误:
@opendataApp.errorhandler(404)
或:
@opendataApp.errorhandler(NotFound)
装饰器,但以下不起作用:
@opendataApp.errorhandler(HTTPException)
它不处理任何 Werkzeug 错误。
这就像 Flask Error Handler 只想知道 Werkzeug 的顶部 class 而不是从它的继承树中推断。但我知道它是有能力的,因为 Exception
处理程序捕获任何内置的 subclassed 错误(例如 NotImplementedError
)。
所以我的问题是:如何使用 Flask 错误处理程序立即捕获 Werkzeug 异常?
至少升级到 Flask 1.0,这允许 adding an error handler for the base HTTPException
。
pip install -U flask