Python Glossary English

Python 3.5+tracebackпонятие

traceback.TracebackException

снимок исключения

Снимок исключения, готовый к печати: тип, сообщение, стек и цепочка __cause__/__context__ — без ссылок на кадры и их переменные.

Синтаксис

te = traceback.TracebackException.from_exception(exc, *, limit=None, capture_locals=False)

Хранить само исключение долго дорого: e.__traceback__ держит все кадры, а с ними все локальные переменные — большие списки, открытые файлы. TracebackException.from_exception(e) сразу снимает всё нужное для печати, и исключение можно отпустить. format() возвращает генератор строк, а не строку — склеивайте ''.join(...). С capture_locals=True в снимок попадает repr локальных переменных каждого кадра; метод print(file=...) появился в Python 3.11.

Примеры

import traceback
try:
    int('x')
except ValueError as e:
    te = traceback.TracebackException.from_exception(e)
print(''.join(te.format_exception_only()), end='')
# → ValueError: invalid literal for int() with base 10: 'x'
print(te.stack[-1].name)  # → <module>
print(next(te.format()), end='')  # → Traceback (most recent call last):

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности