Есть ли способ получить доступ к вложенным или повторно созданным исключениям в python?

Распространенным шаблоном в Python является перехват ошибки в вышестоящем модуле и повторное повышение этой ошибки как чего-то более полезного.

try:
    config_file = open('config.ini', 'r')
except IOError:
    raise ConfigError('Give me my config, user!')

Это сгенерирует трассировку стека в форме

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
__main__.ConfigError: Give me my config, user!

Есть ли способ получить доступ к обернутому исключению, чтобы сгенерировать трассировку стека, более похожую на это?

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
__builtin__.IOError: File Does not exist.
Exception wrapped by:
  File "<stdin>", line 4, in <module>
__main__.ConfigError: Give me my config, user!

РЕДАКТИРОВАТЬ:

Проблема, которую я пытаюсь решить поражение заключается в том, что какой-то сторонний код может переносить исключения до 3 раз, и я хочу иметь возможность определить основную причину, то есть общий способ проверки стека исключений и определения основной причины исключения без необходимости добавления какого-либо дополнительного кода сторонним модулям.

9
задан Thomas 25 January 2012 в 06:26
поделиться