sys.exc_info() возвращает кортеж (тип, значение, трассировка).
поэтому sys.exc_info()[2]
- наш отслеживание объект.Почему exc_traceback возвращает None
Почему не ловит исключения отслеживающих с этим кодом:
import sys
try:
1/0
except ZeroDivisionError:
print sys.exc_info()[2].tb_frame.f_back
tb_frame и использование f_back были объяснены здесь: Frame Objects
У него есть трассировка, иначе вы получите 'AttributeError', но кадр трассировки не имеет' f_back'. Это кажется мне совершенно разумным. Если вы используете это прямо, * какой внешний фрейм вы ожидали? * – jonrsharpe
в строке 269 traceback.py в стандартной библиотеке то же самое: tb_frame.f_back. – Heartagramir
Это не отвечает на мой вопрос. * Почему вы думаете, что в этом случае будет внешний кадр *? – jonrsharpe