Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Pengelolaan Exception Python: Panduan Lengkap

Halaman Sebelumnya Halaman Berikutnya  

Python menyediakan dua fitur yang sangat penting untuk menangani error tak terduga dalam program Python Anda dan untuk menambahkan kemampuan debug dalamnya −

Daftar Exception Standar −

Sr.No. Nama Exception & Deskripsi
1

Exception

Kelas dasar untuk semua exception

2

StopIteration

Dilemparkan ketika metode next() dari iterator tidak menunjuk ke objek apa pun.

3

SystemExit

Dilemparkan oleh fungsi sys.exit().

4

StandardError

Kelas dasar untuk semua exception bawaan kecuali StopIteration dan SystemExit.

5

ArithmeticError

Kelas dasar untuk semua error yang terjadi untuk perhitungan numerik.

6

OverflowError

Dilemparkan ketika perhitungan melebihi batas maksimum untuk tipe numerik.

7

FloatingPointError

Dilemparkan ketika perhitungan titik apung gagal.

8

ZeroDivisionError

Dilemparkan ketika pembagian atau modulo oleh nol terjadi untuk semua tipe numerik.

9

AssertionError

Dilemparkan jika pernyataan Assert gagal.

10

AttributeError

Dilemparkan jika referensi atau penetapan atribut gagal.

11

EOFError

Dilemparkan ketika tidak ada input dari fungsi raw_input() atau input() dan akhir berkas tercapai.

12

ImportError

Dilemparkan ketika pernyataan import gagal.

13

KeyboardInterrupt

Dilemparkan ketika pengguna mengganggu eksekusi program, biasanya dengan menekan Ctrl+c.

14

LookupError

Kelas dasar untuk semua error pencarian.

15

IndexError

Dilemparkan ketika indeks tidak ditemukan dalam urutan.

16

KeyError

Dilemparkan ketika kunci yang ditentukan tidak ditemukan dalam kamus.

17

NameError

Dilemparkan ketika pengidentifikasi tidak ditemukan dalam namespace lokal atau global.

18

UnboundLocalError

Dilemparkan ketika mencoba mengakses variabel lokal dalam fungsi atau metode tetapi tidak ada nilai yang ditetapkan padanya.

19

EnvironmentError

Kelas dasar untuk semua exception yang terjadi di luar lingkungan Python.

20

IOError

Dilemparkan ketika operasi input/output gagal, seperti pernyataan print atau fungsi open() saat mencoba membuka berkas yang tidak ada.

21

IOError

Dilemparkan untuk error terkait sistem operasi.

22

SyntaxError

Dilemparkan ketika ada error dalam sintaks Python.

23

IndentationError

Dilemparkan ketika indentasi tidak ditentukan dengan benar.

24

SystemError

Dilemparkan ketika interpreter menemukan masalah internal, tetapi ketika error ini ditemukan, interpreter Python tidak keluar.

25

SystemExit

Dilemparkan ketika interpreter Python keluar menggunakan fungsi sys.exit(). Jika tidak ditangani dalam kode, menyebabkan interpreter keluar.

26

TypeError

Dilemparkan ketika operasi atau fungsi dicoba yang tidak valid untuk tipe data yang ditentukan.

27

ValueError

Dilemparkan ketika fungsi bawaan untuk tipe data memiliki tipe argumen yang valid, tetapi argumen memiliki nilai yang tidak valid yang ditentukan.

28

RuntimeError

Dilemparkan ketika error yang dihasilkan tidak termasuk dalam kategori apa pun.

29

NotImplementedError

Dilemparkan ketika metode abstrak yang perlu diimplementasikan dalam kelas turunan sebenarnya tidak diimplementasikan.

Assertions di Python

Sebuah assertion adalah pemeriksaan kesarangan yang dapat Anda nyalakan atau matikan saat Anda selesai menguji program.

Cara termudah untuk memikirkan assertion adalah dengan menyebutkannya sebagai pernyataan raise-if (atau untuk lebih akurat, pernyataan raise-if-not). Sebuah ekspresi diuji, dan jika hasilnya salah, sebuah exception dilemparkan.

Assertions dilakukan oleh pernyataan assert, kata kunci terbaru untuk Python, diperkenalkan dalam versi 1.5.

Programmer sering menempatkan assertions di awal fungsi untuk memeriksa input yang valid, dan setelah pemanggilan fungsi untuk memeriksa output yang valid.

Pernyataan assert

Saat menemukan pernyataan assert, Python mengevaluasi ekspresi yang menyertai, yang semoga benar. Jika ekspresi salah, Python raises exception AssertionError.

Sintaks untuk assert adalah −

 assert Expression[, Arguments] 

Jika assertion gagal, Python menggunakan ArgumentExpression sebagai argumen untuk AssertionError. Exception AssertionError dapat ditangani dan ditangani seperti exception apa pun menggunakan pernyataan try-except, tetapi jika tidak ditangani, mereka akan mengakhiri program dan menghasilkan traceback.

Contoh

Berikut adalah fungsi yang mengonversi suhu dari derajat Kelvin ke derajat Fahrenheit. Karena nol derajat Kelvin adalah sejuk yang mungkin, fungsi keluar jika melihat suhu negatif −

Live Demo
 #!/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) 

Saat kode di atas dieksekusi, hasilnya adalah sebagai berikut −

 32.0 451 Traceback (most recent call last): File "test.py", line 9, in <module> print KelvinToFahrenheit(-5) File "test.py", line 4, in KelvinToFahrenheit assert (Temperature >= 0),"Colder than absolute zero!" AssertionError: Colder than absolute zero! 

Apa itu Exception?

Sebuah exception adalah peristiwa yang terjadi selama eksekusi program yang mengganggu alur normal instruksi program. Secara umum, ketika skrip Python menemukan situasi yang tidak dapat ditangani, ia raises exception. Sebuah exception adalah objek Python yang mewakili error.

Saat skrip Python raises exception, ia harus menangani exception segera jika tidak maka akan diakhiri dan keluar.

Menangani exception

Jika Anda memiliki beberapa kode curiga yang mungkin raises exception, Anda dapat membela program Anda dengan menempatkan kode curiga dalam blok try:. Setelah blok try:, sertakan pernyataan except:, diikuti oleh blok kode yang menangani masalah seindah mungkin.

Sintaks

Berikut adalah sintaks sederhana dari blok try....except...else −

 try: Anda melakukan operasi di sini; ...................... except ExceptionI: Jika ada ExceptionI, maka jalankan blok ini. except ExceptionII: Jika ada ExceptionII, maka jalankan blok ini. ...................... else: Jika tidak ada exception maka jalankan blok ini. 

Berikut beberapa poin penting tentang sintaks di atas −

Contoh

Contoh ini membuka berkas, menulis konten ke berkas, dan keluar dengan sukses karena tidak ada masalah sama sekali −

Live Demo
 #!/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 berkas tempat Anda tidak memiliki izin tulis, sehingga raises exception −

Live Demo
 #!/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 

Klausa except Tanpa Exception

Anda juga dapat menggunakan pernyataan except tanpa exception yang didefinisikan sebagai berikut −

 try: Anda melakukan operasi di sini; ...................... except: Jika ada exception apa pun, maka jalankan blok ini. ...................... else: Jika tidak ada exception maka jalankan blok ini. 

Jenis pernyataan try-except ini menangkap semua exception yang terjadi. Penggunaan jenis pernyataan try-except ini tidak dianggap praktik pemrograman yang baik meskipun, karena menangkap semua exception tetapi tidak membuat programmer mengidentifikasi penyebab utama masalah yang mungkin terjadi.

Klausa except dengan Beberapa Exception

Anda juga dapat menggunakan pernyataan except yang sama untuk menangani beberapa exception sebagai berikut −

 try: Anda melakukan operasi di sini; ...................... except(Exception1[, Exception2[,...ExceptionN]]]): Jika ada exception dari daftar exception yang diberikan, maka jalankan blok ini. ...................... else: Jika tidak ada exception maka jalankan blok ini. 

Klausa try-finally

Anda dapat menggunakan blok finally: bersama dengan blok try:. Blok finally adalah tempat untuk menempatkan kode apa pun yang harus dieksekusi, apakah blok try raises exception atau tidak. Sintaks pernyataan try-finally adalah sebagai berikut −

 try: Anda melakukan operasi di sini; ...................... Karena exception apa pun, ini mungkin dilewati. finally: Ini selalu akan dieksekusi. ...................... 

Anda tidak dapat menggunakan klausa else juga bersama dengan klausa finally.

Contoh

Live Demo
 #!/usr/bin/python try: fh = open("testfile", "w") fh.write("This is my test file for exception handling!!") finally: print "Error: can\'t find file or read data" 

Jika Anda tidak memiliki izin untuk membuka berkas dalam mode penulisan, maka ini akan menghasilkan hasil berikut −

 Error: can't find file or read data 

Contoh yang sama dapat ditulis lebih rapi sebagai berikut −

Live Demo
 #!/usr/bin/python try: fh = open("testfile", "w") try: fh.write("This is my test file for exception handling!!") finally: print "Going to close the file" fh.close() except IOError: print "Error: can\'t find file or read data" 

Saat exception dilemparkan dalam blok try, eksekusi segera melewati ke blok finally. Setelah semua pernyataan dalam blok finally dieksekusi, exception dilemparkan lagi dan ditangani dalam pernyataan except jika ada dalam lapisan selanjutnya dari pernyataan try-except.

Argumen Exception

Sebuah exception dapat memiliki argumen, yaitu nilai yang memberikan informasi tambahan tentang masalah. Isi argumen bervariasi menurut exception. Anda menangkap argumen exception dengan menyediakan variabel dalam klausa except sebagai berikut −

 try: Anda melakukan operasi di sini; ...................... except ExceptionType, Argument: Anda dapat mencetak nilai Argument di sini... 

Jika Anda menulis kode untuk menangani satu exception, Anda dapat memiliki variabel yang mengikuti nama exception dalam pernyataan except. Jika Anda menangkap beberapa exception, Anda dapat memiliki variabel yang mengikuti tuple exception.

Variabel ini menerima nilai exception yang sebagian besar berisi penyebab exception. Variabel dapat menerima satu nilai atau beberapa nilai dalam bentuk tuple. Tuple ini biasanya berisi string error, nomor error, dan lokasi error.

Contoh

Berikut adalah contoh untuk satu exception −

Live Demo
 #!/usr/bin/python # Definisikan fungsi di sini. def temp_convert(var): try: return int(var) except ValueError, Argument: print "The argument does not contain numbers\n", Argument # Panggil fungsi di atas di sini. temp_convert("xyz"); 

Ini menghasilkan hasil berikut −

 The argument does not contain numbers invalid literal for int() with base 10: 'xyz' 

Melemparkan Exception

Anda dapat raises exception dengan beberapa cara menggunakan pernyataan raise. Sintaks umum untuk pernyataan raise adalah sebagai berikut.

Sintaks

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

Di sini, Exception adalah jenis exception (misalnya, NameError) dan argument adalah nilai untuk argumen exception. Argumen ini opsional; jika tidak disediakan, argumen exception adalah None.

Argumen akhir, traceback, juga opsional (dan jarang digunakan dalam praktik), dan jika ada, adalah objek traceback yang digunakan untuk exception.

Contoh

Sebuah exception dapat berupa string, kelas, atau objek. Sebagian besar exception yang di-raise oleh inti Python adalah kelas, dengan argumen yang merupakan instance dari kelas. Mendefinisikan exception baru cukup mudah dan dapat dilakukan sebagai berikut −

 def functionName( level ): if level < 1: raise "Invalid level!", level # Kode di bawah ini tidak akan dieksekusi # jika kita raise exception 

Catatan: Untuk menangkap exception, klausa "except" harus merujuk ke exception yang sama yang dilemparkan baik objek kelas atau string sederhana. Misalnya, untuk menangkap exception di atas, kita harus menulis klausa except sebagai berikut −

 try: Logika Bisnis di sini... except "Invalid level!": Penanganan exception di sini... else: Sisa kode di sini... 

Exception yang Didefinisikan Pengguna

Python juga memungkinkan Anda membuat exception Anda sendiri dengan menurunkan kelas dari exception bawaan standar.

Berikut adalah contoh terkait RuntimeError. Di sini, sebuah kelas dibuat yang merupakan subclass dari RuntimeError. Ini berguna ketika Anda perlu menampilkan informasi yang lebih spesifik saat exception ditangkap.

Dalam blok try, exception yang didefinisikan pengguna dilemparkan dan ditangkap dalam blok except. Variabel e digunakan untuk membuat instance dari kelas Networkerror.

 class Networkerror(RuntimeError): def __init__(self, arg): self.args = arg 

Jika setelah Anda mendefinisikan kelas di atas, Anda dapat raises exception sebagai berikut −

 try: raise Networkerror("Bad hostname") except Networkerror,e: print e.args 

Python

  1. Menguasai Tipe Data Python: Panduan Praktis
  2. Menguasai Operator Python: Panduan Komprehensif
  3. Menguasai Pernyataan Pass Python: Panduan Praktis
  4. Menguasai Argumen Fungsi Python: Posisi, Kata Kunci, dan Parameter Default
  5. Menguasai Kamus Python: Pembuatan, Manipulasi, dan Teknik Lanjutan
  6. Menguasai Error dan Exception Bawaan Python
  7. Menguasai Penanganan Exception Python: try, except, else, dan finally Dijelaskan
  8. Menguasai Exception Kustom Python: Panduan Praktis
  9. Menguasai Iterator Python: Cara Kerja dan Membuat Sendiri
  10. Penutupan (Closure) Python Dijelaskan: Cara Fungsi Bertingkat Mengambil Variabel