Exception Handler

Posted on December 9th, 2023
Intermediate
...

Sekali program Anda mendapatkan error, maka program terhenti. Perhatikan code berikut

def dividen(numberOne, numberTwo):
   result = numberOne/numberTwo
   print(result)
   
dividen(10,2)
dividen(4,2)
dividen(3,0)
dividen(5,5)

Coba

Saat Anda jalankan, program akan terhenti di line ke 7 dan tidak melanjutkan proses ke bawah. ZeroDivisionError keluar ketika program mencoba membagi angka dengan angka nol. Berhentinya program di tengah jalan ini sering disebut dengan istilah crash.

Solusi agar program Anda tidak crash, maka terapkan syntax try except. Berikut contoh codenya

def dividen(numberOne, numberTwo):
   try:
       result = numberOne/numberTwo
   except ZeroDivisionError:
       result = 'illegal division by zero'
   print(result)
  
  
dividen(10,2)
dividen(4,2)
dividen(3,0)
dividen(5,5)

Coba

Program sebelumnya akan berhenti di tengah jalan. Setelah di tambahkan try exception, program akan tetap berjalan walaupun terjadi error di tengah jalan. 

Cobalah menelusuri setiap error yang akan terjadi di program Python Anda. Daftar exception bawaan Python dapat dilihat di sini 

Apabila anda menentukan error secara bebas dan tidak menentukan apapun, maka ubah codenya menjadi seperti ini :

try:
   print(x)
except Exception as e:
   print("error :",e)

Coba

Perhatikan codingan diatas, error yang dihasilkan try except dapat diambil message nya dan Anda dapat membuat perintah sendiri dari error tersebut.

Exception ada keyword else dan finally, else akan di jalankan ketika tidak ada error yang ditemukan, finally akan di jalankan apapun kondisinya (ada error maupun tidak ada error). Berikut contoh codenya :

try:
   print("me")
except NameError as e:
   print("error :",e)
else:
   print("nothing")

Coba

try:
  print(x)
except NameError as e:
  print("error :",e)
finally:
  print("nothing")

Coba

Raise Exception

Anda bisa membangkitkan error sendiri dengan code berikut:

x = 7
if x % 2 != 0:
   raise Exception("Not even number")

Coba

Error yg dibangkitkan dapat diubah tipe errornya secara bebas, berikut contoh codenya:

x = 7
if x % 2 != 0:
  raise ArithmeticError("Not even number")

Coba