How can I debug a Flask application that has a custom exception handler?
我想为我的Flask应用程序实现一个异常处理程序,当抛出
轻松进行此操作
1 2 3 | @application.errorhandler(Exception) def http_error_handler(error): return flask.render_template('error.html', error=error), 500 |
但是这样做的副作用是捕获所有异常,然后再将它们击中调试器(Werkzeug调试器或我的IDE的),从而有效地禁用了调试。
如何实现仍允许调试异常和错误的自定义异常处理程序?在调试模式下是否可以禁用我的自定义处理程序?
当未捕获的异常传播时,Werkzeug将生成500个异常。为
1 2 3 | @app.errorhandler(500) def handle_internal_error(e): return render_template('500.html', error=e), 500 |
以下是一个完整的应用程序,演示了错误处理程序可用于断言,引发和中止。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from flask import Flask, abort app = Flask(__name__) @app.errorhandler(500) def handle_internal_error(e): return 'got an error', 500 @app.route('/assert') def from_assert(): assert False @app.route('/raise') def from_raise(): raise Exception() @app.route('/abort') def from_abort(): abort(500) app.run() |
转到所有三个URL(/ assert,/ raise和/ abort)将显示消息"获取错误"。使用