Python Glossary English

все Python 3sysфункция

sys.exc_info()

исключения

Возвращает кортеж (тип, исключение, трассировка) для обрабатываемого сейчас исключения или (None, None, None), если обработчик не выполняется.

Синтаксис

exc_type, exc_value, exc_tb = sys.exc_info()

Это старая форма: с Python 3.11 тот же результат даёт sys.exception() одним объектом, а тип и трассировка выводятся из него. Кортеж из трёх None — не ошибка: вызов вне except (или после него) честно возвращает три None, и распаковка t, v, tb = sys.exc_info() пройдёт, а t.__name__ упадёт уже с AttributeError. Трассировку не храните в долгоживущих объектах — она держит кадры со всеми локальными переменными и мешает освобождению памяти.

Примеры

# Python 3.11+
import sys
try:
    1 / 0
except ZeroDivisionError:
    t, v, tb = sys.exc_info()
    print(t.__name__, v, tb.tb_lineno)  # → ZeroDivisionError division by zero 4
    print(v is sys.exception())  # → True
print(sys.exc_info())  # → (None, None, None)

См. также

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