Получить стек вызовов функций из исключения

Когда функция python дает сбой, мы получаем трассировку, в которой перечислены имена файлов, строки и вызовы функций.

Есть ли способ в блоке except вытащить Только с этими именами функций? Мне просто нужен список последовательных звонков, которые привели к сбою.

Я просмотрел библиотеку traceback и запустил dir() для своего исключения, но ничего не вижу.

2
0
41
1

Ответы 1

Я в последний раз взглянул на документацию traceback и понял это.

Сначала используйте traceback.extract_tb(), чтобы получить StackSummary. Это список объектов FrameSummary, которые сами по себе являются кортежами, третье значение которых - имя функции. В полном объеме:

try:
  some_function()
except Exception as e:
  tb = traceback.extract_tb(e.__traceback__)
  for frame in tb:
    print(frame[2])

вывод будет примерно таким

<module>
some_function
another_func_called_by_some_function
...

Другие вопросы по теме