使用 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