Cara menggunakan exception python

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.

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 kasus

Jalankan 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 handling

Untuk 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 = True
32,

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 = True
33.

Pada panduan ini, kamu akan belajar cara menanganinya dengan tepat dan mengankat exceptions di Python.

Beberapa Exceptions yang Umum

Berikut adalah beberapa exceptions dasar yang mungkin kamu alami saat menulit program. Kamu bisa baca lebih banyak mengenai di situs resminya.

  • NameError: exception ini muncul ketika program-nya tidak dapat menemukan sebuah nama lokal atau global. Nama yang tidak dapat ditemukan dimasukkan ke dalam pesan error-nya.
  • TypeError: Pengecualian ini muncul ketika sebuah fungsi dilewatkan ke sebuah objek dari tipe yang tidak tepat sebagai sebuah argumen. Detil lengkapnya disediakan melalui pesan error.
  • ValueError: Pengecualian ini terjadi ketika sebuah fungsi argumen memiliki tipe yang benar namun nilai yang salah.
  • NotImplementedError: Pengecualian ini muncul ketika sebuah objek seharusnya mendukung sebuah operasi namun belum diterapkan. Kamu seharusnya tidak menggunakan error ini ketika fungsi yang diberikan tidak ditujukan untuk mendukung tipe dari argumen masukan-nya. Pada situasi tersebut, memunculkan
    keep_asking = True
    
    32 exception jauh lebih tepat.
  • ZeroDivisionError: Exception ini muncul ketika kamu menyediakan angka 0 argumen kedua untuk operasi pembagian atau modulo.
  • FileNotFoundError: Exception ini muncul ketika berkas atau direktori yang program minta tidak ditemukan atau tidak ada.

Seperti nama-nama diatas, kebanyakan exception memiliki nama-nama yang cukup jelas.

Menangani Exception

Kode 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 = True
35. Langkah selanjutnya adalah menggunakan keyword
keep_asking = True
36 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 = True
5
5
keep_asking = True
7
keep_asking = True
8
keep_asking = True
9
2
0
2
1
2
2
2
3

Apa yang terjadi di sini adalah program-nya mencoba untuk mengeksekusi kodenya di dalam klausa

keep_asking = True
35. Jika tidak ada exception yang muncul, prgoramnya kan melewati klause
keep_asking = True
36 dan sisa kode-nya akan dieksekusi secara normal. Jika sebuah exception muncul, program-nya akan melewatkan sisa kode di dalam klausa
keep_asking = True
35 dan tipe dari exception-nya akan dicocokkan dengan nama exception setelah keyword
keep_asking = True
36. Dalam kasus yang cocok, kode di dalam klausa
keep_asking = True
36 akan dieksekusi terlebih dahulu dan sisa setelah klausa
keep_asking = True
35 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 = True
36 untuk menangai aneka exceptions. Tolong diingat bahwa handler hanya akan menangani exception yang terjadi dan berkoreponsi dengan klausa
keep_asking = True
35. Mereka tidak akan menangani exception apapun yang muncul di handler exception yang lainnya.

Kamu juga bisa menangani banyak exception menggunakan satu klausa

keep_asking = True
36 dengan melwatkan exception tersebut ke klausa sebagai sebuah
keep_asking = True
46.

1
2
5
2
2
7
3
2
9

Pada akhirnya, kamu juga bisa meninggalkan nama dari exceptionnya setelah keyword

keep_asking = True
36. 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 = True
32 exception dengan cara yang sama dengan saat kamu menangani sebuah
keep_asking = True
49 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
3
1
2
3
3
3
4
3
6
5
3
8
keep_asking = True
8
while keep_asking:
0
2
0
while keep_asking:
2
2
2
while keep_asking:
4
while keep_asking:
5
while keep_asking:
6

Menggunakan Klause Else

Kamu juga bisa menggunakan sebuah klausa 

keep_asking = True
50 di dalam pernyataan
keep_asking = True
51. Klausa
keep_asking = True
50 diperuntukkan untuk mengandung kode yang perlu dieksekusi jika klause
keep_asking = True
35 tidak memunculkan exception apapun. Ini bisa jadi berguna untuk memastikan bahwa kamu tidak menambahkan kode apapun ke blok
keep_asking = True
35 yang memiliki exception yang tidak ingin kamu tangkap. Satu hal yang perlu disebut adalah bahwa jika kamu memutuskan untuk menggunakan sebuah klausa
keep_asking = True
50, kamu harus memasukkan-nya setelah semua klausa
keep_asking = True
36 namun sebelum blok
keep_asking = True
57.

Pada kasus kita, kita bisa memindahkan baris yang mencetak hasilkan ke pembagian kita di dalam blok

keep_asking = True
50.

1
keep_asking = True
2
3
while keep_asking:
4
keep_asking = True
5
5
keep_asking = True
7
keep_asking = True
8
2
1
2
0
4
9
2
2
    x = int(input("Enter a number: "))
1
while keep_asking:
5
keep_asking = True
9

Membersihkan Menggunakan Klausa Finally

Mari katakan kamu harus menulis beberapa kode di dalam blok

keep_asking = True
35 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 = True
57.

Kode di dalam klausa

keep_asking = True
57 selalu dieksekusi terlepas dari baik blok
keep_asking = True
35 memunculkan exception maupun tidak.

1
keep_asking = True
2
3
while keep_asking:
4
keep_asking = True
5
5
keep_asking = True
7
keep_asking = True
8
2
1
2
0
4
9
2
2
    x = int(input("Enter a number: "))
1
while keep_asking:
5
keep_asking = True
9
    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 = True
36 yang dispesifikasikan tidak menangani exception yang muncul, exception yang sama akan dimunculkan kembali setelah eksekusi kode di dalam blok
keep_asking = True
57.

Contoh yang Lebih Rumit

Pada 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 = True
32 dan
keep_asking = True
33. Blok
keep_asking = True
50 diugnakan untuk mencetak faktorial-nya. Kamu bisa lihat di output-nya bahwa kode-nya hanya dieksekusi ketika tidak ada exception muncul.

1
3
1
2
3
    print("Dividing 50 by", x,"will give you :", 50/x)
9
4
5
1
2
keep_asking = True
8
keep_asking = True
5
2
0
1
6
2
2
1
8
while keep_asking:
5
keep_asking = True
00
    print("Dividing 50 by", x,"will give you :", 50/x)
1
2
1
    print("Dividing 50 by", x,"will give you :", 50/x)
3
keep_asking = True
04
keep_asking = True
05
    x = int(input("Enter a number: "))
1
keep_asking = True
07
keep_asking = True
08
keep_asking = True
09
    print("Dividing 50 by", x,"will give you :", 50/x)
2
keep_asking = True
11
keep_asking = True
12

Kode di atas menghasilkan output berikut:

1
keep_asking = True
14
2
keep_asking = True
16
3
4
keep_asking = True
19
5
keep_asking = True
16
keep_asking = True
8
2
0
keep_asking = True
24
2
2
keep_asking = True
16
while keep_asking:
5
    print("Dividing 50 by", x,"will give you :", 50/x)
1
keep_asking = True
29
    print("Dividing 50 by", x,"will give you :", 50/x)
3
keep_asking = True
16

Hal lain yang penting untuk diperhatikan adalah bahwa kode di dalam klausa

keep_asking = True
57 dieksekusi untuk tiap item dalam list.

Hal Terkahir

Saya 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.