Flask 中间件类引发异常未捕获

时间:2021-07-24 14:29:04

标签: python flask

这是app.py的一部分:

app = Flask(__name__)
app.config.from_object('SETTINGS')
app.wsgi_app = Middleware(app.wsgi_app, app)


@app.errorhandler(ValueError)
def all_exception_handler(error):
    print('Error Catched!')
    return 'Error Handler', 500

这是 Middleware 类的一部分:

class Middleware:
    def __init__(self, wsgi, app):
        self.wsgi = wsgi
        self.app = app


    def __call__(self, environ, start_response):

        raise ValueError('Value Error')

        return self.wsgi(environ, start_response)

所以我的问题是当我在 ValueError (Middleware) 中引发 raise ValueError('Value Error' 异常时,@app.errorhandler(ValueError) 没有触发,因此我没有收到 print('Error Catched!')我的控制台

1 个答案:

答案 0 :(得分:1)

再次问候我的朋友?

told you Middlewares 在应用层之外(在请求之外/在 Flask 应用程序之外等)=> 应用程序错误处理程序将不起作用。只需将您的逻辑移动到 @app.before_requestapp.before_request_funcs