2011-06-20 17 views
5

Duplicar posible:
Don't show Python raise-line in the exception stack¿Planteando excepciones sin 'raise' en la trazabilidad?

construido en excepciones como NameError etc. dame un rastreo hasta el punto en mi código donde ocurrió la excepción. Estoy trabajando en un módulo de utilidad y me molesta que si el código que usa mi módulo aumenta y la excepción es lo último en el rastreo antes de que la excepción sea mi raise WhateverError.

¿Hay alguna manera de lanzar una excepción en python y hacer que la tragamonedas detenga un fotograma al ala de las excepciones integradas (sin escribir el código c)?

Respuesta

3

Pure Python no proporciona una forma de mutar objetos de rastreo existentes ni crear objetos de rastreo arbitrarios.

>>> exc_info[2].tb_next = None 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: readonly attribute 

>>> types.TracebackType() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: cannot create 'traceback' instances 

Tenga en cuenta que si fuera posible hacer esto usted no sólo afecta el formato predeterminado de los rastreos, también habría interfieren con la capacidad de las personas para utilizar el AP a la post-mortem errores en el módulo de servicios públicos.

Si la trazabilidad está siendo registrada o formateada de otro modo por su módulo de utilidad, entonces simplemente no puede incluir los marcos que considere poco interesantes en la salida. Por ejemplo, el módulo unittest de la biblioteca estándar hace esto al informar errores que ocurren durante la ejecución de pruebas.

Cuestiones relacionadas