Latar belakang saya adalah dalam C # dan saya baru saja memulai pemrograman dengan Python. Ketika pengecualian dilemparkan, saya biasanya ingin membungkusnya dalam pengecualian lain yang menambahkan lebih banyak informasi, sambil tetap menunjukkan jejak tumpukan penuh. Ini cukup mudah di C #, tetapi bagaimana cara melakukannya dengan Python?
Misalnya. di C # saya akan melakukan sesuatu seperti ini:
try
{
ProcessFile(filePath);
}
catch (Exception ex)
{
throw new ApplicationException("Failed to process file " + filePath, ex);
}
Dengan Python saya bisa melakukan hal serupa:
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file ' + filePath, e)
... tapi ini kehilangan jejak pengecualian batin!
Sunting: Saya ingin melihat pesan pengecualian dan tumpukan jejak serta menghubungkan keduanya. Yaitu, saya ingin melihat dalam output bahwa pengecualian X terjadi di sini dan kemudian pengecualian Y di sana - sama seperti yang saya lakukan di C #. Apakah ini mungkin di Python 2.6? Sepertinya yang terbaik yang bisa saya lakukan sejauh ini (berdasarkan jawaban Glenn Maynard) adalah:
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file' + filePath, e), None, sys.exc_info()[2]
Ini termasuk pesan dan traceback, tetapi tidak menunjukkan pengecualian mana yang terjadi di traceback.