Распространенным шаблоном в 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 раз, и я хочу иметь возможность определить основную причину, то есть общий способ проверки стека исключений и определения основной причины исключения без необходимости добавления какого-либо дополнительного кода сторонним модулям.