Saya memiliki blok
Sebenarnya, saya sebenarnya menaikkan lainnya
Pembaruan: Untuk Python 3, centang Jawaban Ben Untuk melampirkan pesan ke pengecualian saat ini dan menaikkannya kembali: (Coba luar/hanya untuk menunjukkan efeknya) Untuk python 2.x di mana x> = 6:
Ini
juga akan melakukan hal yang benar jika Perhatikan bahwa Anda dapat menambahkan apa pun yang Anda suka ke Edit: @Ducan menunjuk dalam komentar di atas tidak bekerja dengan python 3 karena
Edit2: Bergantung pada apa tujuannya, Anda juga dapat memilih untuk menambahkan informasi tambahan di bawah nama variabel Anda sendiri. Untuk python2 dan python3:
Saya menyadari pertanyaan ini telah ada untuk sementara waktu, tetapi begitu Anda cukup beruntung hanya mendukung python 3.x, ini benar-benar menjadi sesuatu yang indah :) bangkit dariKami dapat membuat rantai pengecualian menggunakan meningkatkan dari .
Dalam hal ini, pengecualian yang akan ditangkap oleh penelepon Anda memiliki nomor baris tempat kami menaikkan pengecualian kami.
Perhatikan pengecualian bawah hanya memiliki stacktrace dari tempat kami mengangkat pengecualian kami. Penelepon Anda masih
bisa mendapatkan pengecualian asli dengan mengakses atribut with_tracebackAtau Anda dapat menggunakan with_traceback .
Menggunakan formulir ini, pengecualian penelepon Anda akan menangkap memiliki traceback dari tempat kesalahan asli terjadi.
Perhatikan bahwa pengecualian bawah memiliki garis tempat kami melakukan pembagian yang tidak valid serta garis tempat kami mengeluarkan pengecualian.
cetakan:
Tampaknya semua jawaban menambahkan info ke e.args [0], sehingga mengubah pesan kesalahan yang ada. Apakah ada kerugian untuk memperpanjang args Tuple? Saya pikir kemungkinan terbalik adalah, Anda dapat meninggalkan pesan kesalahan asli sendirian untuk kasus-kasus di mana parsing string itu diperlukan; dan Anda dapat menambahkan beberapa elemen ke Tuple jika penanganan kesalahan khusus Anda menghasilkan beberapa pesan atau kode kesalahan, untuk kasus-kasus di mana traceback akan diuraikan secara program (seperti melalui alat pemantauan sistem).
atau
Bisakah Anda melihat kelemahan dari pendekatan ini? Templat kode ini harus memungkinkan Anda untuk meningkatkan pengecualian dengan pesan khusus.
Ini adalah fungsi yang saya gunakan untuk mengubah pesan pengecualian di Python 2.7 dan 3.x sambil mempertahankan traceback asli. Membutuhkan
Entah menaikkan pengecualian baru dengan menggunakan pesan kesalahan Anda
atau
di tempat Anda ingin meningkatkannya OR lampirkan (ganti) pesan kesalahan ke dalam pengecualian saat ini menggunakan 'from':
Pengecualian bawaan Python 3 memiliki bidang
Jawaban saat ini tidak berfungsi dengan baik untuk saya, jika pengecualian tidak ditangkap kembali pesan terlampir tidak ditampilkan. Tetapi melakukan seperti di bawah keduanya menyimpan jejak dan menunjukkan pesan yang ditambahkan terlepas dari apakah pengecualian ditangkap kembali atau tidak.
(Saya menggunakan Python 2.7, belum mencobanya dengan Python 3) |