Exception Handling jika diartikan secara bebas dapat disebut sebagai ‘teknik penanganan kasus khusus’. Exception handling pada kode program diperlukan saat kita perlu menyiasati adanya perintah yang gagal dieksekusi karena adanya kondisi yang tidak sesuai dengan kondisi yang diharapkan pada kasus normal. Show
Contoh sederhana kondisi tidak normal misalkan saat program mengharapkan input dari user berupa angka namun user/sistem memberikan nilai ataupun format yang tidak valid. Jika kasus khusus tersebut tidak diberikan penanganan khusus maka program dapat terhenti karena error. Contoh kasusJalankan contoh kode di bawah, kemudian coba berikan nilai seharusnya (angka) dan bandingkan hasilnya dengan memberikan nilai yang tidak sesuai (misal: huruf). Jika pada contoh di atas user memberikan nilai non angka saat diminta, maka program akan mengalami fatal error dan keluar sebelum baris kode berikutnya dijalankan . Menambahkan exception handlingUntuk menangani kasus pada contoh di atas kita dapat memodifikasi kode dan menambahkan exception handling untuk mendeteksi terjadinya kesalahan. Dengan menambahkan exception handling, jikapun terjadi kesalahan program dapat tetap melanjutkan ke baris berikutnya. Syntax exeption handling try: # blok kode ini dieksekusi terlebih dahulu except: # eksekusi pindah ke blok except bila pada blok try terjadi error # eksekusi pindah tanpa melanjutkan sisa kode pada blok try Solusi untuk kasus sebelumnya Jalankan contoh berikut untuk lebih jelasnya, berikan nilai yang yang sama seperti saat anda menghasilkan error pada contoh kode sebelumnya dan perhatikan hasilnya. Sangat lumrah untuk mengalami error selama eksekusi dari sebuah program. Dua macam error yang lumrah dan perlu ditangani adalah syntax error dan exceptions. Syntax error terjadi ketika kamu mengetik kode-nya dengan salah. dalam beberapa kasus, baris yang keliru diulangi oleh parser-nya dengan sebuah panah menunjuk ke lokasi terkini di mana error-nya terdeteksi. Excepetions berbeda dengan syntax error. mereka terjadi selama eksekusi sebuah program saat sesuatu yang tidak diperkirakan terjadi. contohnya, mari katakan kamu meminta penggunanya untuk memasukkan sebuah angka untuk melakukan sebuah pembagian. Sekarang, jika penggunanya memasukkan sebuah string ketimbang sebuah angka dan kamu mencoba membagi sebuah angka dengan input yang diberikan, program-nya akan mengeluarkan keep_asking = True32, Ketika tidak menangani exceptions dengan tepat, program-nya akan keluar secara paksa karena dia tidak tahu apa yang perlu dilakukan dalam kasus tersebut. Kode berikut adalah sebuah contoh: 1 keep_asking = True 2 3 while keep_asking: 4 x = int(input("Enter a number: ")) 5 print("Dividing 50 by", x,"will give you :", 50/x) Sepanjang kamu memasukkan nilai input integral, programnya akan bekerja dengan benar. Walau bagaimanapun, sesegara kamu memasukkan sebuah string atau bahkan sebuah angka desimal sebagai masukannya, kamu akan menerima exception keep_asking = True33. Pada panduan ini, kamu akan belajar cara menanganinya dengan tepat dan mengankat exceptions di Python. Beberapa Exceptions yang UmumBerikut adalah beberapa exceptions dasar yang mungkin kamu alami saat menulit program. Kamu bisa baca lebih banyak mengenai di situs resminya.
Seperti nama-nama diatas, kebanyakan exception memiliki nama-nama yang cukup jelas. Menangani ExceptionKode di awal artikel meminta pengguna untuk memasukkan integer sebagai sebuah input. Jika penggunanya tidak menyediakan masukkan integer, program-nya akan menghentikan eksekusi dan memunculkan nilai error exception-nya. Pada bagian ini, kita akan menulis beberapa kode untuk memberi tahu pengguna bahwa masukkan mereka bukanlah nilai integer yang valid. Langkah pertama dari prosesnya adalah memasukkan kode yang kamu anggap bisa menimbulkan exception di dalam klausa keep_asking = True35. Langkah selanjutnya adalah menggunakan keyword keep_asking = True36 untuk menangani exception yang terjadi pada kode di atas. Kode yang dimodifikasi untuk masukkan penggunanya akan tampah seperti berikut: 1 keep_asking = True 2 3 while keep_asking: 4 keep_asking = True5 5 keep_asking = True7 keep_asking = True8 keep_asking = True9 20 21 22 23 Apa yang terjadi di sini adalah program-nya mencoba untuk mengeksekusi kodenya di dalam klausa keep_asking = True35. Jika tidak ada exception yang muncul, prgoramnya kan melewati klause keep_asking = True36 dan sisa kode-nya akan dieksekusi secara normal. Jika sebuah exception muncul, program-nya akan melewatkan sisa kode di dalam klausa keep_asking = True35 dan tipe dari exception-nya akan dicocokkan dengan nama exception setelah keyword keep_asking = True36. Dalam kasus yang cocok, kode di dalam klausa keep_asking = True36 akan dieksekusi terlebih dahulu dan sisa setelah klausa keep_asking = True35 akan dieksekusi secara normal. Ketika kamu memasukkan sebuah integer sebagai masukkannya, program-nya memberikanmu hasil akhir dari pembagian. Ketika nilai non-integral disediakan, program-nya akan mencetak sebuah pesan memintamu untuk mencoba dan memasukkan sebuah integer lagi. Ingat kali ini, programnya tidak akan keluar secara paksa saat kamu memasukkan nilai yang tidak valid. Kamu bisa memiliki banyak klausa keep_asking = True36 untuk menangai aneka exceptions. Tolong diingat bahwa handler hanya akan menangani exception yang terjadi dan berkoreponsi dengan klausa keep_asking = True35. Mereka tidak akan menangani exception apapun yang muncul di handler exception yang lainnya. Kamu juga bisa menangani banyak exception menggunakan satu klausa keep_asking = True36 dengan melwatkan exception tersebut ke klausa sebagai sebuah keep_asking = True46. 1 25 2 27 3 29 Pada akhirnya, kamu juga bisa meninggalkan nama dari exceptionnya setelah keyword keep_asking = True36. Pada umumnya ini tidak direkomendasikan karena sekarang kode-nya akan mengejar semua exception dan menangani mereka dengan cara yang sama. Ini tidak optimal karena kamu akan menangani seuah keep_asking = True32 exception dengan cara yang sama dengan saat kamu menangani sebuah keep_asking = True49 exception. Saat menangani exception, akan lebih baik untuk menjadi se-spesifik mungkin dan hanya menangkap apa yang bisa kamu tangani. Satu penggunaan yang mungkin untuk menangkap semua exception adalah dengan mencetak semua exception error di layar seperti pada kode berikut: 1 31 2 33 3 4 36 5 38 keep_asking = True8 while keep_asking:0 20 while keep_asking:2 22 while keep_asking:4 while keep_asking:5 while keep_asking:6 Menggunakan Klause ElseKamu juga bisa menggunakan sebuah klausa keep_asking = True50 di dalam pernyataan keep_asking = True51. Klausa keep_asking = True50 diperuntukkan untuk mengandung kode yang perlu dieksekusi jika klause keep_asking = True35 tidak memunculkan exception apapun. Ini bisa jadi berguna untuk memastikan bahwa kamu tidak menambahkan kode apapun ke blok keep_asking = True35 yang memiliki exception yang tidak ingin kamu tangkap. Satu hal yang perlu disebut adalah bahwa jika kamu memutuskan untuk menggunakan sebuah klausa keep_asking = True50, kamu harus memasukkan-nya setelah semua klausa keep_asking = True36 namun sebelum blok keep_asking = True57. Pada kasus kita, kita bisa memindahkan baris yang mencetak hasilkan ke pembagian kita di dalam blok keep_asking = True50. 1 keep_asking = True 2 3 while keep_asking: 4 keep_asking = True5 5 keep_asking = True7 keep_asking = True8 21 20 49 22 x = int(input("Enter a number: "))1 while keep_asking:5 keep_asking = True9 Membersihkan Menggunakan Klausa FinallyMari katakan kamu harus menulis beberapa kode di dalam blok keep_asking = True35 yang diperuntukkan untuk melalukan sebuah tugas dengan menggunakan jumlah resource yang besar. Penting untuk melepas resource tersebut kembali ketika kamu selesai menggunakannya. Ini bisa diraih dengan mudah dengan menggunakan klause keep_asking = True57. Kode di dalam klausa keep_asking = True57 selalu dieksekusi terlepas dari baik blok keep_asking = True35 memunculkan exception maupun tidak. 1 keep_asking = True 2 3 while keep_asking: 4 keep_asking = True5 5 keep_asking = True7 keep_asking = True8 21 20 49 22 x = int(input("Enter a number: "))1 while keep_asking:5 keep_asking = True9 print("Dividing 50 by", x,"will give you :", 50/x)1 print("Dividing 50 by", x,"will give you :", 50/x)2 print("Dividing 50 by", x,"will give you :", 50/x)3 print("Dividing 50 by", x,"will give you :", 50/x)4 Jika ada klausa keep_asking = True36 yang dispesifikasikan tidak menangani exception yang muncul, exception yang sama akan dimunculkan kembali setelah eksekusi kode di dalam blok keep_asking = True57. Contoh yang Lebih RumitPada bagian ini, kita akan menulis sebuah program untuk menangani aneka exceptions. Hanya seperti contoh-contoh sebelumnya, kita akan melakukan beberapa operasi matematis. Namun, kali ini kita akan mengambil beberapa input dari sebuah list. Kode berikut mengecek dua exceptions, keep_asking = True32 dan keep_asking = True33. Blok keep_asking = True50 diugnakan untuk mencetak faktorial-nya. Kamu bisa lihat di output-nya bahwa kode-nya hanya dieksekusi ketika tidak ada exception muncul. 1 31 2 3 print("Dividing 50 by", x,"will give you :", 50/x)9 4 5 12 keep_asking = True8 keep_asking = True5 20 16 22 18 while keep_asking:5 keep_asking = True00 print("Dividing 50 by", x,"will give you :", 50/x)1 21 print("Dividing 50 by", x,"will give you :", 50/x)3 keep_asking = True04 keep_asking = True05 x = int(input("Enter a number: "))1 keep_asking = True07 keep_asking = True08 keep_asking = True09 print("Dividing 50 by", x,"will give you :", 50/x)2 keep_asking = True11 keep_asking = True12 Kode di atas menghasilkan output berikut: 1 keep_asking = True14 2 keep_asking = True16 3 4 keep_asking = True19 5 keep_asking = True16 keep_asking = True8 20 keep_asking = True24 22 keep_asking = True16 while keep_asking:5 print("Dividing 50 by", x,"will give you :", 50/x)1 keep_asking = True29 print("Dividing 50 by", x,"will give you :", 50/x)3 keep_asking = True16 Hal lain yang penting untuk diperhatikan adalah bahwa kode di dalam klausa keep_asking = True57 dieksekusi untuk tiap item dalam list. Hal TerkahirSaya harap panduan ini akan membantumu memahami penanganan exception di Python. Di samping itu, jangan ragu untuk melihat apa yang tersedia untuk dijual dan dipelajari di marketplace. Dan jangan ragu untuk menanyakan pertanyaan apapun dan menyediakan umpan balik yang berguna menggunakan umpan berikut. Menangani exception dengan tepat bisa jadi sangat membantu pada situasi dimana kelaur dari sebuah program ketika menerima sebuah input yang tidak diperkirakan tidak dapat dilakukan. Jika kamu punya pertanyaan terkait penanganan exception di Python tolong beri komentar. Apa itu exception pada python?Exception adalah objek Python yang mewakili kesalahan.
Apa yang dimaksud try except?Pernyataan try-except merupakan ekstensi Microsoft ke bahasa C yang memungkinkan aplikasi untuk mendapatkan kontrol atas program ketika terjadi peristiwa yang biasanya menghentikan eksekusi.
Apa itu try dan except di Python?Try digunakan untuk menguji suatu instruksi. Except untuk menampilkan pesan kesalahan.
Kapan kita menggunakan exception handling?Exception Handling merupakan mekanisme yang paling diperlukan dalam menangani error yang terjadi pada saat runtime (program berjalan) atau yang lebih dikenal dengan sebutan runtime error. Secara umum, adanya kesalahan / error yang terjadi pada program pada saat runtime dapat menyebabkan program berhenti atau hang.
|