все Python 3tracebackфункция
traceback.format_exc()
трассировка в строку
Трассировка текущего обрабатываемого исключения одной строкой — то же, что печатается при падении, но в переменную: для лога, файла, письма.
Синтаксис
text = traceback.format_exc(limit=None, chain=True)
Работает только внутри except (или в функции, вызванной оттуда): вне обработки вернёт строку 'NoneType: None\n', а не ошибку, и пустой отчёт легко не заметить. Если исключение возникло внутри другого except, в текст войдёт и первое — после фразы «During handling of the above exception…»; chain=False оставит только последнее. Для лога короче logger.exception('…'): он сам допишет ту же трассировку.
Примеры
import traceback
try:
1 / 0
except ZeroDivisionError:
text = traceback.format_exc()
print(text.splitlines()[0]) # → Traceback (most recent call last):
print(text.splitlines()[-1]) # → ZeroDivisionError: division by zero
import traceback
print(repr(traceback.format_exc())) # → 'NoneType: None\n'
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности