Pengecualian adalah peristiwa yang timbul semasa pelaksanaan program untuk menghentikan atau mengubah aliran normal program. Kesalahan, misalnya, menimbulkan pengecualian. Seperti bahasa pengaturcaraan lain, Python mengandungi banyak pengecualian terbina dalam. Pengecualian ini ditimbulkan jika terdapat kesalahan semasa program dijalankan. Jenis ralat menentukan pengecualian mana yang akan dikemukakan. Apabila pengecualian berlaku, jurubahasa Python memeriksa sama ada pengecualian itu dikendalikan; jika tidak, ia menghentikan program. Artikel ini menerangkan pengecualian dalam Python melalui pelbagai contoh.
Pengecualian Python terbina dalam
Seperti yang telah dibincangkan sebelumnya, Python mempunyai banyak pengecualian bawaan yang ditimbulkan ketika ralat berlaku semasa pelaksanaan program. Setiap pengecualian berasal dari kelas asas "Pengecualian". Yang berikut merangkumi beberapa pengecualian Python bawaan, bersama dengan penerangan ringkas setiap jenis pengecualian:
Pengecualian | Penerangan |
---|---|
Pengecualian | Setiap pengecualian berasal dari kelas ini. |
Kesalahan Import | Pengecualian ini ditimbulkan ketika modul tertentu diimport, dan tidak dijumpai. |
Ralat EOF | Ini adalah pengecualian akhir fail. Pengecualian ini berlaku apabila akhir fail dicapai. |
Ralat ZeroDivision | Pengecualian ini dibangkitkan apabila nombor dibahagi dengan sifar. |
Kesalahan Utama | Pengecualian ini dibangkitkan jika kunci tertentu yang tidak ditentukan dalam kamus ditentukan atau digunakan. |
Kesalahan Indeks | Pengecualian ini ditimbulkan ketika akses ke indeks urutan yang tidak berada dalam jangkauan telah dicuba. |
Ralat FloatingPoint | Pengecualian ini ditimbulkan apabila operasi floating-point gagal. |
Ini adalah beberapa pengecualian bawaan di Python. Sila lawati dokumentasi rasmi untuk maklumat lebih lanjut mengenai penggunaan pengecualian terbina dalam di Python, yang terdapat di https: // docs.ular sawa.org / 3 / perpustakaan / pengecualian.html.
Penggunaan Pengecualian di Python
Pengecualian dalam Python dikendalikan menggunakan pernyataan cuba. Bahagian kod yang boleh membuang atau meningkatkan pengecualian dilaksanakan dalam blok percubaan. Di sebelah blok percubaan, blok kecuali dilaksanakan untuk menangani pengecualian. Di blok kecuali, kami melihat pengecualian dan memutuskan operasi apa yang akan dilakukan apabila kami menemui pengecualian tersebut. Sintaks menulis cubaan dan kecuali blok adalah seperti berikut:
cuba:menjalankan operasi atau fungsi
kecuali:
fungsi untuk menangani pengecualian
Sekarang, kami akan menerapkan kod ringkas dalam skrip Python kami menggunakan cubaan dan kecuali blok.
Di sini, kami akan mencetak pemboleh ubah 'name' yang tidak ditentukan. Ini menimbulkan pengecualian di blok kecuali.
#melaksanakan blok percubaancuba:
cetak (nama)
#melaksanakan blok kecuali
kecuali:
cetak ("Pengecualian berlaku")
Pengeluaran
Sekiranya tidak ada pengecualian, maka hanya blok percubaan yang dijalankan. Di blok kecuali, pernyataan dicetak bahawa pengecualian telah berlaku.
Mari kita lihat contoh lain di mana kita menentukan pemboleh ubah nama:
#menentukan pemboleh ubah namanama = "Tandakan"
#melaksanakan blok percubaan
cuba:
cetak (nama)
#melaksanakan blok kecuali
kecuali:
cetak ("Pengecualian berlaku")
Pengeluaran
Dalam contoh di atas, blok percubaan dijalankan dan blok kecuali dilangkau kerana program tidak menimbulkan pengecualian. Kami dapat menentukan seberapa banyak kecuali blok dalam program kami yang kami mahukan. Setiap blok kecuali mengendalikan jenis pengecualian tertentu.
#melaksanakan blok percubaancuba:
cetak (nama)
#melaksanakan blok kecuali untuk menangkap kesalahan nama
kecuali NameError:
cetak ("Pemboleh ubah tidak ditentukan")
#melaksanakan blok kecuali
kecuali:
cetak ("Ada yang tidak kena selain daripada kesalahan nama")
Pengeluaran
Di Python, Pengecualian adalah kelas asas untuk semua pengecualian. Daripada menulis nama pengecualian tertentu di blok kecuali, kita hanya boleh menulis "Pengecualian" dan menangkap setiap jenis pengecualian dengan cara ini.
#melaksanakan blok percubaancuba:
cetak (nama)
#melaksanakan blok kecuali untuk menangkap ralat
kecuali Pengecualian seperti exp:
mencetak (exp.__kelas__)
#melaksanakan blok kecuali
kecuali:
cetak ("Ada yang tidak kena selain daripada kesalahan nama")
Pengeluaran
Pengeluaran.__class__ mengembalikan nama kelas pengecualian.
Begitu juga, mari kita lihat contoh kelas "ZeroDivisionError".
#melaksanakan blok percubaancuba:
x = 1/0
cetak (x)
#melaksanakan blok kecuali untuk menangkap ralat
kecuali Pengecualian seperti exp:
mencetak (exp.__kelas__)
#melaksanakan blok kecuali
kecuali:
cetak ("Ada yang tidak kena selain daripada kesalahan nama")
Pengeluaran
Blok yang lain
Blok lain digunakan dengan blok percubaan dan pengecualian. Blok lain mendefinisikan sekeping kod yang dijalankan jika blok percubaan berjaya dilaksanakan dan tidak ada ralat yang berlaku. Kadang kala, anda mungkin perlu mencetak mesej atau melakukan fungsi ketika blok percubaan berjaya dilaksanakan. Atas sebab ini, kita dapat melaksanakan blok lain dengan mencuba dan kecuali blok.
Dalam contoh ini, kami akan melaksanakan blok lain dalam skrip Python kami.
#melaksanakan blok percubaancuba:
x = 1/2
cetak (x)
#melaksanakan blok kecuali untuk menangkap ralat
kecuali Pengecualian seperti exp:
mencetak (exp.__kelas__)
#melaksanakan blok yang lain
lain:
cetak ("Semuanya berjalan lancar")
Pengeluaran
Blok lain dilaksanakan berikutan kejayaan pelaksanaan blok percubaan.
Mari kita lihat contoh lain menggunakan blok yang lain.
#melaksanakan blok percubaancuba:
nama = "Tandakan"
#melaksanakan blok kecuali untuk menangkap ralat
kecuali Pengecualian seperti exp:
mencetak (exp.__kelas__)
#melaksanakan blok yang lain
lain:
cetak ("Nama adalah:", nama)
Pengeluaran
Dalam contoh di atas, pemboleh ubah nama didefinisikan di dalam blok percubaan dan dicetak di blok yang lain.
Sekatan akhirnya
The akhirnya blok mengandungi potongan kod yang mesti dilaksanakan tanpa mengira sama ada blok percubaan menimbulkan pengecualian. Blok akhirnya adalah pilihan dan dinyatakan dengan blok cubaan. Sebagai contoh, jika kita telah membuka file teks untuk membaca blok coba dan menimbulkan kesalahan atau pengecualian, lebih baik menyertakan file di blok akhirnya, walaupun kesalahan itu terjadi. Mari kita laksanakan blok akhirnya dalam skrip Python kami.
#melaksanakan blok percubaancuba:
cetak (my_dict)
#melaksanakan blok kecuali untuk menangkap ralat
kecuali Pengecualian seperti exp:
mencetak (exp.__kelas__)
#melaksanakan blok akhirnya
akhirnya:
cetak ("Inilah blok akhirnya")
cetak ("Blok akhirnya dilaksanakan")
Pengeluaran
Dalam output, dapat dilihat bahawa blok percubaan menimbulkan pengecualian. Walau bagaimanapun, blok akhirnya dilaksanakan pada akhir.
Sekarang, mari kita buka fail teks di blok percubaan, yang menimbulkan pengecualian sementara fail yang dilampirkan pada blok akhirnya.
#melaksanakan blok percubaancuba:
fileObj = terbuka ("mistik.xml "," r ")
failObj.cari (-2)
cetak (fileObj.bacaan semula ())
#melaksanakan blok kecuali
kecuali Pengecualian seperti exp:
mencetak (exp.__kelas__)
#melaksanakan blok akhirnya
akhirnya:
failObj.tutup ()
cetak ("Fail berjaya ditutup")
Pengeluaran
Seperti yang anda lihat, tanpa mengira ralat nilai, fail berjaya ditutup di blok akhirnya.
Tingkatkan Pengecualian
Walaupun pengecualian dinaikkan secara automatik apabila berlaku ralat, di Python, anda juga dapat meningkatkan pengecualian secara manual. The menaikkan kata kunci digunakan untuk menaikkan atau membuang pengecualian.
Kami sekarang akan meningkatkan beberapa pengecualian menggunakan kata kunci kenaikan. Dalam contoh berikut, syarat if dilaksanakan untuk memeriksa nombor bukan negatif. Sekiranya ada nombor bukan negatif, maka pengecualian "Nombor bukan negatif tidak dibenarkan" akan dibangkitkan.
#menyatakan dua pemboleh ubah nombornum1 = 20
num2 = -10
jika ((bilangan1<0) | (num2<0)):
tingkatkan Pengecualian ("Nombor bukan negatif tidak dibenarkan")
lain:
cetak (num1 + num2)
Pengeluaran
Kesimpulannya
Pengecualian berlaku sebagai tindak balas terhadap ralat semasa menjalankan. Di Python, kita dapat menangani pengecualian dengan menggunakan cubaan dan kecuali blok. Artikel ini menerangkan cara menggunakan pengecualian di Python melalui pelbagai contoh.