Нужен пример, чтобы понять, что - когда отладка истинна, исключения распространяются вверх - PullRequest
0 голосов
/ 13 марта 2020
Python 3.7.4
Flask 1.1.1
Werkzeug 0.15.5

Нужен пример, чтобы понять, что - когда для отладки установлено значение True, исключения распространяются вверх.

В приведенном ниже примере режим отладки включен и, следовательно, PROPAGATE_EXCEPTIONS должен быть автоматически включен. Это должно привести к тому, что исключения будут перебрасываться, а не обрабатываться обработчиками ошибок приложения.

Я пробовал код так, что конечная точка root вызывает ZeroDivisionError. Тем не менее, нет никакого распространения независимо от того, является ли отладка True / False:

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)

1 Ответ

0 голосов
/ 13 марта 2020

«вызов конечной точки root (который увеличивает деление на ноль исключений)»: Нет, потому что вы сразу же ловите любое исключение. Это не оставляет ничего для распространения. Кстати, «голое, кроме» не хорошо. Всегда перехватывайте указанные c исключения.

В вашем приложении нет кода, который вызывает исключение 404. Werkzeug не знает, в какое приложение отправить запрос, и возвращает 404 до того, как запрос попадет в ваше приложение, поэтому ваш обработчик ошибок никогда не вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...