Python 需要一个例子来理解-当debug为True时,异常会向上传播

Python 需要一个例子来理解-当debug为True时,异常会向上传播,python,flask,Python,Flask,需要一个例子来理解-当debug为True时,异常会向上传播 在下面的示例中,调试模式已启用,因此应自动启用这将导致重新引发异常,而不是由应用程序的错误处理程序处理。 我尝试了这样的代码,根端点会引发ZeroDivisionError。但是,无论调试是否为真/假,都不会传播: Python 3.7.4 Flask 1.1.1 Werkzeug 0.15.5 “对根端点的调用(引发除零异常)”:否,因为您会立即捕获任何异常。那就没有什么可传播的了。顺便说一句,一个“除了”是不好的。始终捕获特定的

需要一个例子来理解-当debug为True时,异常会向上传播

在下面的示例中,调试模式已启用,因此应自动启用这将导致重新引发异常,而不是由应用程序的错误处理程序处理。

我尝试了这样的代码,根端点会引发ZeroDivisionError。但是,无论调试是否为真/假,都不会传播:

Python 3.7.4
Flask 1.1.1
Werkzeug 0.15.5
“对根端点的调用(引发除零异常)”:否,因为您会立即捕获任何异常。那就没有什么可传播的了。顺便说一句,一个“除了”是不好的。始终捕获特定的异常


应用程序中没有引发404异常的代码。Werkzeug不知道向哪个应用程序发送请求,并在请求进入应用程序之前返回404,因此您的错误处理程序永远不会被调用。

您正在处理异常。除非未经处理,否则异常无法传播。我现在已更新代码我已更新代码-您现在可以检查吗-我现在未处理任何异常您正在从错误处理程序返回响应。Werkzeug认为这是“已经处理好了”。这里面没有魔法。如果希望它传播异常,则必须重新引发,或调用带有适当HTTP错误的abort。您还可以完全省略处理程序,这也将触发调试器。
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    1/0
    return 'Hello, World!'

@app.errorhandler(ZeroDivisionError)
def handle_bad_request(e):
    return 'bad!', 500

app.run(debug=True)