Benim arka plan C # ve yakın zamanda Python programlamaya başladım. Bir istisna atıldığında, genellikle tam yığın izini gösterirken daha fazla bilgi ekleyen başka bir istisnaya sarmak istiyorum. C # 'da oldukça kolay, ama Python'da nasıl yaparım?
Örneğin. C # ben böyle bir şey yapmak istiyorum:
try
{
ProcessFile(filePath);
}
catch (Exception ex)
{
throw new ApplicationException("Failed to process file " + filePath, ex);
}
Python'da benzer bir şey yapabilirim:
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file ' + filePath, e)
... ama bu, iç istisnanın izini kaybeder!
Düzenleme: İstisna mesajları ve yığın izlerini görmek ve ikisini ilişkilendirmek istiyorum. Yani, çıktıda X istisnasının burada meydana geldiğini ve sonra da istisna Y'nin C # 'daki gibi göründüğünü görmek istiyorum. Bu Python 2.6'da mümkün mü? Şimdiye kadar yapabileceğim en iyi gibi görünüyor (Glenn Maynard'ın cevabına göre):
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file' + filePath, e), None, sys.exc_info()[2]
Bu, hem iletileri hem de geri izlemeleri içerir, ancak geri izlemenin neresinde hangi istisnanın oluştuğunu göstermez.