Каков наилучший способ отображения исключения во Flask? - PullRequest
0 голосов
/ 14 марта 2019

Я новичок во Flask и пытаюсь отобразить Встроенные исключения в python, но у меня не получается, чтобы они отображались на моем конце.

Примечание:

set FLASK_DEBUG = 0

КОД:

def do_something:
    try:
        doing_something()
    except Exception as err:
        return f"{err}"

Expectation:

  • Будет отображено одно из встроенных исключений:
    • KeyError
    • IndexError
    • NameError
    • 1022 * Etc. *

Reality:

  • Он вернет строку кода, которая не сработала, что является более неоднозначным для конечного пользователя.

Также:

  • У меня нет проблем с отображением ошибок, когда включен режим отладки, но это не то, что я хочу делать, если открываю их публично

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Flask предоставляет вам функцию, которая позволяет вам регистрировать обработчик ошибок по всему вашему app;Вы можете сделать что-то, как показано ниже:

def handle_exceptions(e):
    # Log exception in your logs
    # get traceback and sys exception info and log as required   
    # app.logger.error(getattr(e, 'description', str(e)))

    # Print traceback

    # return your response using getattr(e, 'code', 500) etc. 

# Exception is used to catch all exceptions
app.register_error_handler(Exception, handle_exceptions)

По моему честному мнению, это путь.- Следование структуре, найденной в werkzeug.exceptions.HTTPException в качестве примера, является прочной основой.

Наличие единого обработчика исключений, который стандартизирует вашу Exception обработку, визуализацию и ведение журналов, сделает вашу жизнь немного лучше.:)

1 голос
/ 14 марта 2019

Попробуйте с этим:

def do_something:
    try:
        doing_something()
    except Exception as err:
        return f"{err.__class__.__name__}: {err}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...