Un patrón común en python es detectar un error en un módulo en sentido ascendente y volver a generar ese error como algo más útil.¿Hay alguna forma de acceder a las excepciones anidadas o reencaminadas en python?
try:
config_file = open('config.ini', 'r')
except IOError:
raise ConfigError('Give me my config, user!')
Esto generará un seguimiento de la pila de la forma
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
__main__.ConfigError: Give me my config, user!
¿Hay alguna manera de acceder a la excepción ajustada con el fin de generar un seguimiento de pila de la misma familia?
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:
El problema que estoy tratando de derrota es que algún código de tercera parte puede envolver excepciones hasta 3 veces y quiero ser capaz de determinar la causa raíz, es decir, una forma genérica para inspeccionar la pila de excepciones y determinar la causa raíz de una excepción sin tener que agregar ningún código adicional a los módulos de terceros.
¿ayuda sys.last_traceback en absoluto? –
también puede consultar el [módulo de rastreo de python] (http://docs.python.org/library/traceback.html?highlight=traceback) –
Disculpe, esta es una de esas preguntas molestas, pero ... ¿por qué? – senderle