Как можно программно осмотреть отслеживание стека исключения в Python?

Когда исключение происходит в Python, можно ли осмотреть стек? Можно ли определить его глубину? Я посмотрел на traceback модуль, но я не могу выяснить, как использовать его.

Моя цель состоит в том, чтобы поймать любые исключения, которые происходят во время парсинга выражения оценки, не ловя исключения, выданные никакими функциями, которые это, возможно, вызвало. Не ругайте меня за использование оценки. Это не было мое решение.

Примечание: Я хочу сделать это программно, не в интерактивном режиме.

18
задан Nick Retallack 23 January 2012 в 19:18
поделиться

3 ответа

Вы можете использовать модуль inspect, который имеет некоторые полезные функции для трассировки. Посмотрите обзор свойств объектов каркаса.

6
ответ дан 30 November 2019 в 08:32
поделиться

трассировки достаточно - и я полагаю, что документация описывает это довольно хорошо. Упрощенный пример:

import sys
import traceback

try:
    eval('a')
except NameError:
    traceback.print_exc(file=sys.stdout)
14
ответ дан 30 November 2019 в 08:32
поделиться

В дополнение к ответу AndiDog о inspect обратите внимание, что pdb позволяет перемещаться вверх и вниз по стеку, проверять локальные объекты и тому подобное. Исходный код в стандартной библиотеке pdb.py может быть полезен вам в изучении того, как делать такие вещи.

0
ответ дан 30 November 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: