Pengendalian Pengecualian Python: Cuba, Tangkap, Akhirnya

Isi kandungan:

Anonim

Apakah Pengecualian di Python?

Pengecualian adalah kesalahan yang berlaku semasa pelaksanaan program. Namun, semasa menjalankan program, Python menghasilkan pengecualian yang harus ditangani untuk mengelakkan program anda tidak berfungsi. Dalam bahasa Python, pengecualian memicu kesalahan secara automatik, atau kesalahan itu dapat dipicu dan dipintas oleh kod anda.

Pengecualian menunjukkan bahawa, walaupun peristiwa itu dapat terjadi, jenis kejadian ini jarang terjadi. Apabila kaedah tidak dapat menangani pengecualian, kaedah tersebut dilemparkan ke fungsi pemanggilnya. Akhirnya, apabila pengecualian dikeluarkan dari fungsi utama, program ini dihentikan secara tiba-tiba.

Dalam tutorial pengendalian Python yang luar biasa ini, anda akan belajar:

  • Apakah Pengecualian di Python?
  • Contoh Pengecualian yang Biasa
  • Mengapa anda mesti menggunakan Pengecualian?
  • Peraturan Pengecualian
  • Mekanisme Pengendalian yang Luar Biasa
    • Penyataan Cuba
    • Penyataan tangkapan
    • Kenyataan Kenaikan
  • Kesalahan Python Penting
  • Pengecualian Python Penting yang Lain
  • Ralat berbanding Pengecualian

Contoh Pengecualian Umum:

  • Pembahagian oleh Zero
  • Mengakses fail yang tidak ada.
  • Penambahan dua jenis yang tidak serasi
  • Mencuba untuk mengakses indeks urutan yang tidak ada
  • Mengeluarkan jadual dari pelayan pangkalan data yang terputus.
  • Pengeluaran ATM melebihi jumlah yang ada

Mengapa anda mesti menggunakan Pengecualian?

Berikut adalah sebab untuk menggunakan pengecualian di Python:

  • Pengendalian pengecualian membolehkan anda memisahkan kod pengendalian ralat dari kod biasa.
  • Pengecualian adalah objek Python yang mewakili ralat.
  • Seperti komen kod, pengecualian membantu anda mengingatkan diri anda sendiri tentang apa yang diharapkan oleh program.
  • Ini menjelaskan kod dan meningkatkan kebolehbacaan.
  • Membolehkan anda merangsang akibat kerana pengendalian kesalahan berlaku di satu tempat dan dalam satu cara.
  • Pengecualian adalah kaedah yang sesuai untuk menangani mesej ralat.
  • Di Python, anda boleh meningkatkan pengecualian dalam program dengan menggunakan kaedah kenaikan pengecualian.
  • Meningkatkan pengecualian akan membantu anda mematahkan pelaksanaan kod semasa dan mengembalikan pengecualian itu kembali ke ekspektasi sehingga dikendalikan.
  • Memproses pengecualian untuk komponen yang tidak dapat mengendalikannya secara langsung.

Peraturan Pengecualian

Berikut adalah beberapa peraturan penting pengendalian pengecualian Python:

  • Pengecualian mestilah objek kelas
  • Untuk pengecualian kelas, anda boleh menggunakan pernyataan cuba dengan klausa kecuali yang menyebut kelas tertentu.
  • Walaupun pernyataan atau ungkapan betul secara sintaksis, ia mungkin menunjukkan kesalahan ketika usaha dilakukan untuk melaksanakannya.
  • Kesalahan yang dijumpai semasa pelaksanaan disebut pengecualian, dan tidak membawa maut tanpa syarat.

Mekanisme Pengendalian yang Luar Biasa

Pengendalian pengecualian dikendalikan oleh 5 kata kunci berikut:

  1. cuba
  2. tangkap
  3. akhirnya
  4. baling

Penyataan Cuba

Pernyataan cuba termasuk kata kunci percubaan, diikuti dengan titik dua (:) dan rangkaian kod di mana pengecualian mungkin berlaku. Ia mempunyai satu atau lebih klausa.

Semasa pelaksanaan pernyataan percubaan, jika tidak ada pengecualian yang berlaku, jurubahasa mengabaikan pengendali pengecualian untuk pernyataan percubaan khusus itu.

Sekiranya, jika ada pengecualian yang berlaku dalam suite percubaan, set percubaan akan habis masa berlakunya dan kawalan program dipindahkan ke pemadanan kecuali pengendali yang mengikuti set percubaan.

Syntax:try:statement(s)

Penyataan tangkapan

Blok tangkapan mengambil satu argumen pada satu masa, yang merupakan jenis pengecualian yang kemungkinan besar dapat ditangkap. Argumen-argumen ini mungkin terdiri dari jenis pengecualian tertentu yang dapat divariasikan ke kategori pengecualian umum.

Peraturan untuk blok tangkapan:

  • Anda boleh menentukan blok tangkapan dengan menggunakan kata kunci tangkapan
  • Parameter Catch Exception selalu dilampirkan dalam kurungan
  • Ini selalu mewakili jenis pengecualian yang mengendalikan tangkapan blok.
  • Kod pengendalian pengecualian ditulis antara dua {} pendakap kerinting.
  • Anda boleh meletakkan beberapa blok tangkapan dalam satu blok percubaan.
  • Anda boleh menggunakan blok tangkapan hanya selepas blok percubaan.
  • Semua blok tangkapan harus dipesan dari subkelas hingga pengecualian superclass.

Contoh:

try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}

Akhirnya Sekat

Akhirnya blok selalu dilaksanakan tanpa mengira pengecualian dilemparkan atau tidak. Kata kunci terakhir membolehkan anda membuat sekatan kod yang mengikuti blok cubaan tangkapan.

Akhirnya, klausa adalah pilihan. Ini dimaksudkan untuk menentukan tindakan pembersihan yang seharusnya dilakukan dalam semua keadaan.

try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt

Akhirnya, klausa dilaksanakan sebelum pernyataan cuba.

Kenyataan Kenaikan

Kenyataan kenaikan menentukan argumen yang menginisialisasi objek pengecualian. Di sini, koma mengikuti nama pengecualian, dan argumen atau tupel argumen yang mengikuti koma.

Sintaks:

raise [Exception [, args [, traceback]]]

Dalam sintaks ini, argumen adalah pilihan, dan pada masa pelaksanaannya, nilai argumen pengecualian selalu ada.

Contoh:

Pengecualian Python boleh berupa nilai seperti rentetan, kelas, nombor, atau objek. Sebilangan besar pengecualian ini yang ditimbulkan oleh Python core adalah kelas dengan argumen yang merupakan contoh kelas.

Kesalahan Python Penting

Jenis Ralat Penerangan
Kesalahan Aritmetik ArithmeticError bertindak sebagai kelas asas untuk semua pengecualian aritmetik. Ia dikemukakan untuk kesilapan dalam operasi aritmetik.
Kesalahan Import ImportError dinaikkan semasa anda cuba mengimport modul yang tidak ada. Pengecualian seperti ini berlaku sekiranya anda telah membuat kesalahan menaip pada nama modul atau modul yang tidak terdapat dalam lorong standard.
Kesalahan Indeks IndexError muncul ketika anda cuba merujuk urutan yang berada di luar jangkauan.
Kesalahan Utama Apabila kunci tertentu tidak dijumpai dalam kamus, pengecualian KeyError dibangkitkan.
Kesalahan Nama NameError dinaikkan apabila nama disebut dalam kod yang tidak pernah ada di ruang nama tempatan atau global.
Kesalahan Nilai Kesalahan nilai dibangkitkan apabila fungsi atau operasi terbina dalam menerima argumen yang mungkin jenis yang betul tetapi tidak mempunyai nilai yang sesuai.
Kesalahan EOF Kesalahan seperti ini timbul apabila salah satu fungsi terbina dalam (input () atau raw_input ()) mencapai keadaan EOF tanpa membaca data.
Ralat ZeroDivison Kesalahan jenis ini timbul apabila pembahagian atau modul dengan sifar berlaku untuk semua jenis angka.
Kesalahan IO- Kesalahan seperti ini timbul apabila operasi input / output gagal.
ralat sintaks Kesalahan Sintaks timbul apabila terdapat ralat dalam sintaks Python.
Kesalahan Indentasi Kesalahan ini timbul semasa lekukan tidak ditentukan dengan betul

Pengecualian Python Penting yang Lain

Pengecualian Penerangan
Pengecualian Aritmetik Kesalahan aritmetik, seperti membahagi-dengan-sifar.
ArraylndexOutOfBoundsException Indeks susunan di luar batas.
ArrayStoreException Tugasan membantu anda untuk elemen larik jenis yang tidak serasi.
KelasCastException Pelakon tidak sah
MlegalMonitorStateException Operasi monitor yang tidak sah, seperti menunggu pada utas yang tidak terkunci.
MlegalStateException Persekitaran atau aplikasi berada dalam keadaan yang salah.
ClassNotFoundException Kelas tidak dijumpai.
CloneNotSupportedException Percubaan untuk mengklon objek yang tidak melaksanakan antara muka Cloneable.
Pengecualian Akses Tidak Sah Akses ke kelas ditolak.
InstantiationException Berlaku semasa anda membuat objek antara muka atau kelas abstrak.
CloneNotSupportedException Percubaan untuk mengklon objek yang tidak melaksanakan antara muka.

Ralat berbanding Pengecualian

Ralat Pengecualian
Semua kesalahan dalam Python adalah jenis yang tidak dicentang. Pengecualian merangkumi jenis yang dicentang dan tidak dicentang.
Kesalahan berlaku pada masa berjalan yang tidak diketahui oleh penyusun. Pengecualian dapat dipulihkan dengan mengatasinya dengan bantuan blok tangkapan.
Kesalahan kebanyakan disebabkan oleh persekitaran di mana aplikasi dijalankan. Aplikasi itu sendiri menyebabkan pengecualian.
Contoh: Kesalahan OutofMemory Contoh: Pengecualian yang diperiksa, pengecualian SQL, NullPointerException, dll.

Ringkasan

  • Pengecualian adalah kesalahan yang berlaku semasa pelaksanaan program.
  • Pengecualian menunjukkan bahawa, walaupun peristiwa itu dapat terjadi, jenis kejadian ini jarang terjadi.
  • Contoh Umum Pengecualian adalah 1) Pembahagian dengan Sifar, 2) Mengakses fail yang tidak ada, 3) Penambahan dua jenis yang tidak serasi.
  • Pengecualian adalah objek Python yang mewakili ralat.
  • Pernyataan cuba termasuk kata kunci percubaan, diikuti dengan titik dua (:) dan rangkaian kod di mana pengecualian mungkin berlaku. Ia mempunyai satu atau lebih klausa.
  • Blok tangkapan mengambil satu argumen pada satu masa, yang merupakan jenis pengecualian yang kemungkinan besar dapat ditangkap.
  • Kenyataan kenaikan menentukan argumen yang menginisialisasi objek pengecualian.
  • Akhirnya, blok selalu dilaksanakan tanpa mengira pengecualian dilemparkan atau tidak.