Typowy wzorzec w pythonie polega na wychwyceniu błędu w module wyższego poziomu i ponownym podniesieniu tego błędu jako czegoś bardziej użytecznego.Czy istnieje sposób uzyskiwania dostępu do zagnieżdżonych lub ponownie zgłaszanych wyjątków w pythonie?
try:
config_file = open('config.ini', 'r')
except IOError:
raise ConfigError('Give me my config, user!')
To wygeneruje ślad stosu formy
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
__main__.ConfigError: Give me my config, user!
Czy istnieje jakiś sposób, aby uzyskać dostęp do zawinięty wyjątku w celu wygenerowania ślad stosu bardziej jak to?
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!
EDIT:
Problem Próbuję porażki jest to, że niektóre 3-cia kod stron może owinąć wyjątki do 3 razy i chcę, aby być w stanie określić przyczynę, czyli sposób ogólny aby sprawdzić stos wyjątków i określić główną przyczynę wyjątku bez konieczności dodawania dodatkowego kodu do modułów zewnętrznych.
w ogóle robi pomoc sys.last_traceback? –
również może sprawdzić [moduł python traceback] (http://docs.python.org/library/traceback.html?highlight=traceback) –
Niestety, jest to jedno z tych irytujących pytań, ale ... dlaczego? – senderle