Python menyediakan dua fitur yang sangat penting untuk menangani kesalahan tak terduga dalam program Python Anda dan menambahkan kemampuan debugging di dalamnya −
Penanganan Pengecualian – Ini akan dibahas dalam tutorial ini. Berikut adalah daftar Pengecualian standar yang tersedia di Python. Pengecualian Standar
Assertions - Ini akan dibahas dalam tutorial Assertions in Python
Daftar Pengecualian Standar −
Sr. Tidak. Nama Pengecualian & Deskripsi1Pengecualian
Kelas dasar untuk semua pengecualian
2Hentikan Iterasi
Dibesarkan ketika metode next[] dari sebuah iterator tidak menunjuk ke objek apapun
3SystemExit
Dibesarkan oleh sys. keluar[] fungsi
4StandardError
Kelas dasar untuk semua pengecualian bawaan kecuali StopIteration dan SystemExit
5Kesalahan Aritmatika
Kelas dasar untuk semua kesalahan yang terjadi untuk perhitungan numerik
6OverflowError
Dimunculkan saat penghitungan melebihi batas maksimum untuk tipe numerik
7FloatingPointError
Dibesarkan saat perhitungan floating point gagal
8ZeroDivisionError
Dibesarkan saat pembagian atau modulo dengan nol terjadi untuk semua tipe numerik
9AssertionError
Dibesarkan jika terjadi kegagalan pernyataan Asser
10AttributeError
Dibesarkan jika terjadi kegagalan referensi atau penugasan atribut
11EOFError
Dibesarkan ketika tidak ada input dari fungsi raw_input[] atau input[] dan akhir file tercapai
12KesalahanImpor
Dibesarkan saat pernyataan impor gagal
13KeyboardInterupsi
Dimunculkan saat pengguna menginterupsi eksekusi program, biasanya dengan menekan Ctrl+c
14Kesalahan Pencarian
Kelas dasar untuk semua kesalahan pencarian
15IndexError
Dibesarkan ketika indeks tidak ditemukan secara berurutan
16KeyError
Dibesarkan ketika kunci yang ditentukan tidak ditemukan dalam kamus
17NameError
Dibesarkan saat pengidentifikasi tidak ditemukan di namespace lokal atau global
18UnboundLocalError
Dibesarkan saat mencoba mengakses variabel lokal dalam suatu fungsi atau metode tetapi tidak ada nilai yang ditetapkan untuknya
19Kesalahan Lingkungan
Kelas dasar untuk semua pengecualian yang terjadi di luar lingkungan Python
20IOError
Dimunculkan saat operasi input/output gagal, seperti pernyataan cetak atau fungsi open[] saat mencoba membuka file yang tidak ada
21IOError
Dibesarkan untuk kesalahan terkait sistem operasi
22Kesalahan sintaks
Dibesarkan ketika ada kesalahan dalam sintaks Python
23IndentationError
Dibesarkan saat lekukan tidak ditentukan dengan benar
24Sistem bermasalah
Dibesarkan ketika interpreter menemukan masalah internal, tetapi ketika error ini ditemukan, interpreter Python tidak keluar
25SystemExit
Dibesarkan ketika juru bahasa Python berhenti dengan menggunakan sys. keluar[] fungsi. Jika tidak ditangani dalam kode, menyebabkan juru bahasa keluar
26TypeError
Dibesarkan saat operasi atau fungsi dicoba yang tidak valid untuk tipe data yang ditentukan
27ValueError
Dibesarkan ketika fungsi bawaan untuk tipe data memiliki tipe argumen yang valid, tetapi argumen tersebut memiliki nilai yang tidak valid yang ditentukan
28RuntimeError
Dibesarkan ketika kesalahan yang dihasilkan tidak termasuk dalam kategori apa pun
29NotImplementedError
Dibesarkan ketika metode abstrak yang perlu diterapkan di kelas yang diwariskan sebenarnya tidak diterapkan
Pernyataan dengan Python
Penegasan adalah pemeriksaan kewarasan yang dapat Anda aktifkan atau nonaktifkan saat Anda selesai dengan pengujian program
Cara termudah untuk memikirkan pernyataan adalah menyamakannya dengan pernyataan kenaikan-jika [atau lebih akurat, pernyataan kenaikan-jika-tidak]. Ekspresi diuji, dan jika hasilnya salah, pengecualian akan dimunculkan
Penegasan dilakukan oleh pernyataan penegasan, kata kunci terbaru untuk Python, diperkenalkan di versi 1. 5
Pemrogram sering menempatkan pernyataan di awal fungsi untuk memeriksa input yang valid, dan setelah pemanggilan fungsi untuk memeriksa output yang valid
Pernyataan tegas
Saat menemukan pernyataan penegasan, Python mengevaluasi ekspresi yang menyertainya, yang diharapkan benar. Jika ekspresi salah, Python memunculkan pengecualian AssertionError
Sintaks untuk menegaskan adalah -
assert Expression[, Arguments]
Jika pernyataan gagal, Python menggunakan ArgumentExpression sebagai argumen untuk AssertionError. Pengecualian AssertionError dapat ditangkap dan ditangani seperti pengecualian lainnya menggunakan pernyataan try-exception, tetapi jika tidak ditangani, mereka akan menghentikan program dan menghasilkan traceback
Contoh
Berikut adalah fungsi yang mengubah suhu dari derajat Kelvin menjadi derajat Fahrenheit. Karena nol derajat Kelvin sedingin itu, fungsi ditebus jika melihat suhu negatif −
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut -
32.0 451 Traceback [most recent call last]: File "test.py", line 9, in print KelvinToFahrenheit[-5] File "test.py", line 4, in KelvinToFahrenheit assert [Temperature >= 0],"Colder than absolute zero!" AssertionError: Colder than absolute zero!
Apa itu Pengecualian?
Pengecualian adalah peristiwa yang terjadi selama eksekusi program yang mengganggu aliran normal dari instruksi program. Secara umum, ketika skrip Python menghadapi situasi yang tidak dapat diatasi, itu memunculkan pengecualian. Pengecualian adalah objek Python yang mewakili kesalahan
Ketika skrip Python memunculkan pengecualian, itu harus segera menangani pengecualian jika tidak maka akan berhenti dan berhenti
Menangani pengecualian
Jika Anda memiliki beberapa kode mencurigakan yang mungkin menimbulkan pengecualian, Anda dapat mempertahankan program Anda dengan mencoba kode mencurigakan tersebut. memblokir. Setelah mencoba. blokir, sertakan pengecualian. pernyataan, diikuti dengan blok kode yang menangani masalah seanggun mungkin
Sintaksis
Berikut adalah sintaks sederhana try. kecuali. lain blok -
try: You do your operations here; ...................... except ExceptionI: If there is ExceptionI, then execute this block. except ExceptionII: If there is ExceptionII, then execute this block. ...................... else: If there is no exception then execute this block.
Berikut adalah beberapa poin penting tentang sintaks yang disebutkan di atas -
Pernyataan try tunggal dapat memiliki beberapa pernyataan kecuali. Ini berguna ketika blok try berisi pernyataan yang mungkin mengeluarkan berbagai jenis pengecualian
Anda juga dapat memberikan klausa kecuali umum, yang menangani pengecualian apa pun
Setelah klausa kecuali, Anda dapat menyertakan klausa lain. Kode di blok else dieksekusi jika kode di try. blok tidak memunculkan pengecualian
Blok else adalah tempat yang bagus untuk kode yang tidak perlu dicoba. perlindungan blok
Contoh
Contoh ini membuka file, menulis konten di file, dan keluar dengan anggun karena tidak ada masalah sama sekali −
#!/usr/bin/python try: fh = open["testfile", "w"] fh.write["This is my test file for exception handling!!"] except IOError: print "Error: can\'t find file or read data" else: print "Written content in the file successfully" fh.close[]_
Ini menghasilkan hasil berikut -
Written content in the file successfully
Contoh
Contoh ini mencoba membuka file di mana Anda tidak memiliki izin menulis, sehingga menimbulkan pengecualian -
#!/usr/bin/python try: fh = open["testfile", "r"] fh.write["This is my test file for exception handling!!"] except IOError: print "Error: can\'t find file or read data" else: print "Written content in the file successfully"_
Ini menghasilkan hasil berikut -
Error: can't find file or read data
Klausul kecuali dengan Tanpa Pengecualian
Anda juga dapat menggunakan pernyataan exception tanpa pengecualian yang didefinisikan sebagai berikut −
try: You do your operations here; ...................... except: If there is any exception, then execute this block. ...................... else: If there is no exception then execute this block._
Pernyataan coba-kecuali semacam ini menangkap semua pengecualian yang terjadi. Menggunakan pernyataan coba-kecuali semacam ini tidak dianggap sebagai praktik pemrograman yang baik, karena ia menangkap semua pengecualian tetapi tidak membuat pemrogram mengidentifikasi akar penyebab masalah yang mungkin terjadi.
Klausa kecuali dengan Beberapa Pengecualian
Anda juga dapat menggunakan pernyataan exception yang sama untuk menangani banyak exception sebagai berikut −
try: You do your operations here; ...................... except[Exception1[, Exception2[,...ExceptionN]]]]: If there is any exception from the given exception list, then execute this block. ...................... else: If there is no exception then execute this block._
Klausul coba-akhirnya
Anda dapat menggunakan akhirnya. memblokir bersama dengan mencoba. memblokir. Blok terakhir adalah tempat untuk meletakkan kode apa saja yang harus dieksekusi, baik blok coba memunculkan pengecualian atau tidak. Sintaks dari pernyataan try-finally adalah − ini
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_0
Anda tidak dapat menggunakan klausa lain juga bersama dengan klausa akhirnya
Contoh
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_1
Jika Anda tidak memiliki izin untuk membuka file dalam mode penulisan, maka ini akan menghasilkan hasil sebagai berikut –
Error: can't find file or read data
Contoh yang sama dapat ditulis lebih bersih sebagai berikut −
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_3
Ketika pengecualian dilemparkan ke blok try, eksekusi segera diteruskan ke blok finally. Setelah semua pernyataan di blok akhirnya dieksekusi, pengecualian dimunculkan lagi dan ditangani dalam pernyataan kecuali jika ada di lapisan berikutnya yang lebih tinggi dari pernyataan coba-kecuali
Argumen Pengecualian
Pengecualian dapat memiliki argumen, yang merupakan nilai yang memberikan informasi tambahan tentang masalah tersebut. Isi argumen bervariasi berdasarkan pengecualian. Anda menangkap argumen pengecualian dengan menyediakan variabel dalam klausa kecuali sebagai berikut -
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_4
Jika Anda menulis kode untuk menangani satu pengecualian, Anda dapat membuat variabel mengikuti nama pengecualian dalam pernyataan kecuali. Jika Anda menjebak beberapa pengecualian, Anda dapat membuat variabel mengikuti tupel pengecualian
Variabel ini menerima nilai pengecualian yang sebagian besar mengandung penyebab pengecualian. Variabel dapat menerima satu nilai atau beberapa nilai dalam bentuk tupel. Tuple ini biasanya berisi string error, nomor error, dan lokasi error
Contoh
Berikut adalah contoh untuk satu pengecualian −
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_5
Ini menghasilkan hasil berikut -
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_6
Meningkatkan Pengecualian
Anda dapat meningkatkan pengecualian dengan beberapa cara menggunakan pernyataan kenaikan. Sintaks umum untuk pernyataan kenaikan adalah sebagai berikut
Sintaksis
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_7
Di sini, Pengecualian adalah tipe pengecualian [misalnya, NameError] dan argumen adalah nilai untuk argumen pengecualian. Argumennya opsional;
Argumen terakhir, traceback, juga opsional [dan jarang digunakan dalam praktik], dan jika ada, adalah objek traceback yang digunakan untuk pengecualian
Contoh
Pengecualian dapat berupa string, kelas, atau objek. Sebagian besar pengecualian yang dimunculkan oleh inti Python adalah kelas, dengan argumen yang merupakan turunan dari kelas. Mendefinisikan pengecualian baru cukup mudah dan dapat dilakukan sebagai berikut −
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_8
Catatan. Untuk menangkap pengecualian, klausa "kecuali" harus mengacu pada pengecualian yang sama yang dilemparkan baik objek kelas atau string sederhana. Misalnya, untuk menangkap pengecualian di atas, kita harus menulis klausa kecuali sebagai berikut -
#!/usr/bin/python def KelvinToFahrenheit[Temperature]: assert [Temperature >= 0],"Colder than absolute zero!" return [[Temperature-273]*1.8]+32 print KelvinToFahrenheit[273] print int[KelvinToFahrenheit[505.78]] print KelvinToFahrenheit[-5]_9
Pengecualian Buatan Pengguna
Python juga memungkinkan Anda membuat pengecualian sendiri dengan menurunkan kelas dari pengecualian bawaan standar
Berikut adalah contoh yang terkait dengan RuntimeError. Di sini, kelas dibuat yang merupakan subkelas dari RuntimeError. Ini berguna saat Anda perlu menampilkan informasi yang lebih spesifik saat pengecualian tertangkap
Di blok coba, pengecualian yang ditentukan pengguna dimunculkan dan ditangkap di blok kecuali. Variabel e digunakan untuk membuat turunan dari kelas Networkerror