首页 > 解决方案 > 在 Python Flask 中处理 BaseException

问题描述

我正在尝试在我的 Flask 应用程序中集成 Sentry 以报告错误,但最近我遇到了一个问题,第三方库导致BaseException我的一个处理程序被抛出。我看到 Flask 处理 没有问题Exception,但BaseException基本上导致应用程序停止工作。一个简单的例子:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    raise BaseException('Bummer! Exception')
    return 'Hello world'

if __name__ == '__main__':
    app.run(debug=True, port=5004)

调用我得到的路线:

$ curl localhost:5004
curl: (52) Empty reply from server

随后对应用程序的调用使 curl 挂起,等待响应。

我试过errorhandler像这样使用装饰器:

@app.errorhandler(BaseException)
def handle():
    print("Whoops.")

但 Flask 给了我一个错误:

    assert issubclass(exc_class, Exception)
AssertionError

这很公平。我知道这个第三方库应该是子类化的Exception,不是BaseException,但我仍然希望有一种方法来处理 Flask 中的此类错误并结束请求。

标签: pythonpython-3.xflask

解决方案


推荐阅读