Posting pzrq mengatakan untuk menggunakan:
str(e)
Inilah yang saya butuhkan.
(Jika Anda berada di lingkungan unicode, tampaknya:
unicode(e)
akan bekerja, dan tampaknya berfungsi dengan baik di lingkungan non-unicode)
Pzrq mengatakan banyak hal bagus lainnya, tetapi saya hampir melewatkan jawaban mereka karena semua hal baik itu. Karena saya tidak memiliki 50 poin, saya tidak dapat mengomentari jawaban mereka untuk mencoba menarik perhatian pada solusi sederhana yang berhasil, dan karena saya tidak memiliki 15 poin, saya tidak dapat memilih jawaban itu, tetapi saya dapat memposting (merasa terbelakang, tetapi oh well) - jadi di sini saya memposting - mungkin kehilangan poin untuk itu ...
Karena poin saya adalah untuk menarik perhatian pada jawaban pzrq, tolong jangan sayu dan lewatkan semuanya di bawah. beberapa baris pertama dari posting ini adalah yang paling penting.
Ceritaku:
Masalah yang saya datangi di sini adalah jika Anda ingin menangkap pengecualian dari kelas yang tidak dapat Anda kendalikan - lalu bagaimana ??? Saya tentu saja tidak akan mensubklasifikasikan semua kelas yang mungkin digunakan kode saya dalam upaya untuk bisa mendapatkan pesan dari semua kemungkinan pengecualian!
Saya menggunakan:
except Exception as e:
print '%s (%s)' % (e.message,type(e))
yang, seperti kita semua tahu, memberi peringatan yang ditanyakan OP (yang membawaku ke sini), dan ini, yang diberikan pzrq sebagai cara untuk melakukannya:
except Exception as e:
print '%s (%s)' % (str(e),type(e))
tidak.
Saya tidak berada dalam lingkungan unicode, tetapi jawaban jjc membuat saya bertanya-tanya, jadi saya harus mencobanya. Dalam konteks ini menjadi:
except Exception as e:
print '%s (%s)' % (unicode(e),type(e))
yang mengejutkan saya, bekerja persis seperti str (e) - jadi sekarang itulah yang saya gunakan.
Tidak tahu apakah 'str (e) / unicode (e)' adalah 'cara Python yang disetujui', dan saya mungkin akan mencari tahu mengapa itu tidak baik ketika saya sampai ke 3.0, tetapi orang berharap bahwa kemampuan untuk menangani suatu pengecualian tak terduga (*) tanpa sekarat dan masih mendapatkan beberapa informasi darinya tidak akan pernah hilang ...
(*) Hmm. "pengecualian tak terduga" - Saya pikir saya baru saja gagap!