Mi experiencia es en C # y recientemente comencé a programar en Python. Cuando se produce una excepción, normalmente quiero incluirla en otra excepción que agregue más información y, al mismo tiempo, muestre el seguimiento completo de la pila. Es bastante fácil en C #, pero ¿cómo lo hago en Python?
P.ej. en C # haría algo como esto:
try
{
ProcessFile(filePath);
}
catch (Exception ex)
{
throw new ApplicationException("Failed to process file " + filePath, ex);
}
En Python puedo hacer algo similar:
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file ' + filePath, e)
... pero esto pierde el rastro de la excepción interna!
Editar: me gustaría ver tanto los mensajes de excepción como los seguimientos de pila y correlacionar los dos. Es decir, quiero ver en la salida que la excepción X ocurrió aquí y luego la excepción Y allí, igual que lo haría en C #. ¿Es esto posible en Python 2.6? Parece que lo mejor que puedo hacer hasta ahora (según la respuesta de Glenn Maynard) es:
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file' + filePath, e), None, sys.exc_info()[2]
Esto incluye tanto los mensajes como los rastreos, pero no muestra qué excepción ocurrió en qué parte del rastreo.