Как получить подробное исключение? - PullRequest
0 голосов
/ 18 января 2019

Я часто делаю это в исключении Python:

try:
    <some process>
except Exception as e:
    print(e)

Это помогает мне, когда я хочу, чтобы скрипт продолжал работать, но все же сообщал мне, что есть ошибка. Но print(e) не так подробно, как если бы я допустил исключение. Есть ли способ показать ошибку более подробно, не вызывая исключения?

1 Ответ

0 голосов
/ 19 января 2019

Существует несколько способов печати информации о трассировке.

Как уже упоминалось в комментариях, вы можете использовать функцию traceback модуля print_exc

try:
    1 / 0
except Exception:
    traceback.print_exc()

Traceback (most recent call last):
  File "exes.py", line 10, in <module>
    1 / 0
ZeroDivisionError: division by zero

Если вы используете модуль ведения журнала, функция logging.exception автоматически зарегистрирует трассировку как часть сообщения журнала уровня ОШИБКИ.

try:
    2 / 0 
except Exception:
    logging.exception('Something went wrong')

ERROR:root:Something went wrong
Traceback (most recent call last):
  File "exes.py", line 15, in <module>
    2 / 0
ZeroDivisionError: division by zero

Если вы предпочитаете регистрировать трассировку на другом уровне журнала, вы можете передать exc_info=True в функцию журнала, чтобы зарегистрировать трассировку.

try:
    3 / 0 
except Exception:
    logging.warning('Something went wrong.', exc_info=True)

WARNING:root:Something went wrong.
Traceback (most recent call last):
  File "exes.py", line 20, in <module>
    3 / 0
ZeroDivisionError: division by zero
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...