Hindari meningkatkan 0 generik. Untuk menangkapnya, Anda harus menangkap semua pengecualian lain yang lebih spesifik yang mensubklasifikasikannya Show
Masalah 1. Menyembunyikan bug _Sebagai contoh
Masalah 2. Tidak akan menangkapDan tangkapan yang lebih spesifik tidak akan menangkap pengecualian umum
Praktik terbaik. def demo_bad_catch(): try: raise ValueError('Represents a hidden bug, do not catch this') raise Exception('This is the exception you expect to handle') except Exception as error: print('Caught this error: ' + repr(error)) >>> demo_bad_catch() Caught this error: ValueError('Represents a hidden bug, do not catch this',) 1 pernyataan.
yang juga dengan mudah memungkinkan sejumlah argumen untuk diteruskan ke konstruktor _Argumen ini diakses oleh atribut 2 pada objek 0. Sebagai contoh _cetakan
Dalam Python2. 5, atribut 4 yang sebenarnya ditambahkan ke 5 untuk mendorong pengguna ke Pengecualian subkelas dan berhenti menggunakan 2, tetapiPraktik terbaik. def demo_bad_catch(): try: raise ValueError('Represents a hidden bug, do not catch this') raise Exception('This is the exception you expect to handle') except Exception as error: print('Caught this error: ' + repr(error)) >>> demo_bad_catch() Caught this error: ValueError('Represents a hidden bug, do not catch this',) _8 klausaSaat berada di dalam klausa kecuali, Anda mungkin ingin, misalnya, mencatat bahwa jenis kesalahan tertentu terjadi, lalu menaikkan kembali. Cara terbaik untuk melakukannya sambil mempertahankan pelacakan tumpukan adalah dengan menggunakan pernyataan bare raise. Sebagai contoh
Jangan ubah kesalahan Anda. tetapi jika Anda bersikerasAnda dapat mempertahankan stacktrace (dan nilai kesalahan) dengan 9, tetapi ini jauh lebih rawan kesalahan dan memiliki masalah kompatibilitas antara Python 2 dan 3, lebih suka menggunakan 1 kosong untuk menaikkan kembaliUntuk menjelaskan - _9 mengembalikan tipe, nilai, dan traceback
Ini adalah sintaks di Python 2 - perhatikan bahwa ini tidak kompatibel dengan Python 3 _0Jika mau, Anda dapat mengubah apa yang terjadi dengan kenaikan gaji baru Anda - mis. g. pengaturan baru _2 untuk contoh _1Dan kami telah mempertahankan seluruh traceback sambil memodifikasi args. Perhatikan bahwa ini bukan praktik terbaik dan ini adalah sintaks yang tidak valid di Python 3 (membuat menjaga kompatibilitas jauh lebih sulit untuk dikerjakan) _2Di dalam _3Lagi. hindari manipulasi traceback secara manual. Ini dan lebih rawan kesalahan. Dan jika Anda menggunakan threading dan 3 Anda bahkan mungkin mendapatkan traceback yang salah (terutama jika Anda menggunakan penanganan pengecualian untuk aliran kontrol - yang secara pribadi cenderung saya hindari. )Python 3, Pengecualian berantaiDi Python 3, Anda dapat merangkai Pengecualian, yang mempertahankan traceback _4Waspadalah
Metode yang Tidak Digunakan LagiIni dapat dengan mudah disembunyikan dan bahkan masuk ke kode produksi. Anda ingin mengajukan pengecualian, dan melakukannya akan memunculkan pengecualian, tetapi bukan yang dimaksud Valid di Python 2, tetapi tidak di Python 3 adalah sebagai berikut _5Hanya 2. 4 dan lebih rendah), Anda mungkin masih melihat orang mengangkat tali _6Di semua versi modern, ini sebenarnya akan memunculkan 4, karena Anda tidak memunculkan tipe 5. Jika Anda tidak memeriksa pengecualian yang tepat dan tidak memiliki peninjau yang mengetahui masalah tersebut, itu bisa masuk ke produksiContoh PenggunaanSaya mengajukan Pengecualian untuk memperingatkan konsumen tentang API saya jika mereka salah menggunakannya _7Buat jenis kesalahan Anda sendiri saat itu juga
Anda dapat membuat jenis kesalahan Anda sendiri, jika Anda ingin menunjukkan ada sesuatu yang salah dengan aplikasi Anda, cukup subkelaskan titik yang sesuai dalam hierarki pengecualian Apa pengecualian peningkatan di Python dengan contoh?Contoh. Tingkatkan kesalahan dan hentikan program jika x lebih rendah dari 0 . x = -1. jika x < 0. raise Exception("Maaf, tidak ada angka di bawah nol")
Apa itu pengecualian kenaikan?Memunculkan pengecualian adalah teknik untuk menginterupsi aliran normal eksekusi dalam suatu program, menandakan bahwa beberapa keadaan luar biasa telah muncul, dan kembali langsung ke bagian terlampir dari program yang dirancang untuk bereaksi terhadap keadaan tersebut.
Mengapa kami memunculkan pengecualian dengan Python?Terkadang Anda ingin Python melontarkan pengecualian khusus untuk penanganan kesalahan. Anda dapat melakukan ini dengan memeriksa suatu kondisi dan menaikkan pengecualian, jika kondisinya Benar. Pengecualian yang dimunculkan biasanya memperingatkan pengguna atau aplikasi pemanggil .
Bagaimana Anda menangani peningkatan pengecualian dengan Python?Untuk menangani pengecualian, kami telah memasukkan kode, result = pembilang/penyebut di dalam blok try . Sekarang ketika pengecualian terjadi, sisa kode di dalam blok percobaan akan dilewati. Kecuali blok menangkap pengecualian dan pernyataan di dalam kecuali blok dieksekusi. |