Belajar Dasar Python #15 : Exception Handling

Exception Handling

pada saat pembuatan program kita tentunya sering melakukan kesalahan, yang menyebabkan error ketika dijalankan. ada dua jenis error yang ada pada python yaitu Syntax error dan Exception, syntax error terjadi dikarenakan adanya kesalahan dalam penulisan syntax, sedangkan exception ini adalah error yang terjadi saat program sedang berjalan bahkan syntax yang kita masukkan sudah benar. berikut adalah contoh syntax error.

a = 10
if a>10
    print("a lebih besar dari 10")

Output:

  File "exception.py", line 2
    if a>10
          ^
SyntaxError: invalid syntax

berikut contoh exception.

a = 2
b = 0
hasil = a/b

Output:

Traceback (most recent call last):
  File "exception.py", line 3, in 
    hasil = a/b
ZeroDivisionError: division by zero

ZeroDivisionError merupakan salah satu jenis exception. pada saat exception terjadi python akan menampilkan traceback, detail error terjadi, dan program akan langsung dihentikan. Tentunya kita tidak ingin program kita berhenti dikarenakan ada error yang terjadi, kita bisa mengatasi ini dengan beberapa cara. 

try, except

pada python exception bisa di atasi dengan try except statement. dimana kode yang berpotensi menimbulkan exception/error kita masukkan ke dalam blok try, dan pada blok except dimasukkan kode yang akan dieksekusi saat terjadi error. berikut strukturnya.

try:
    kode yang berpotensi error
except:
    kode saat error terjadi

berikut contoh penggunaannya.

try:
    a = int(input('masukkan nilai a '))
    b = int(input('masukkan nilai b '))
    print('hasil a/b adalah',a/b)
except ZeroDivisionError:
    print('masukkan angka selain 0')

Output:

masukkan nilai a 10
masukkan nilai b 0
masukkan angka selain 0

bila anda memasukkan nilai b atau penyebutnya 0, hal ini  tidak akan menimbulkan error dikarenakan kita kita sudah mengantisipasinya dengan menggunakan try except. blok kode except akan dieksekusi jika dideteksi terjadi error pada blok kode try. pada contoh diatas blok except akan mendeteksi segala jenis Exception, kita pun dapat mendeteksi exception tertentu dengan menambahkan nama exception setelah keyword except.

try:
    a = int(input('masukkan nilai a '))
    b = int(input('masukkan nilai b '))
    print('hasil a/b adalah',a/b)
except ZeroDivisionError:
    print('masukkan angka selain 0')

Output:

masukkan nilai a 10
masukkan nilai b r
Traceback (most recent call last):
  File "exception.py", line 7, in 
    b = int(input('masukkan nilai b '))
ValueError: invalid literal for int() with base 10: 'r'

pada contoh diatas, bila anda mengisi 0 untuk penyebutnya, tidak akan terjadi error dikarenakan kita sudah mengantisipasinya, akan tetapi bila anda memasukkan huruf error akan terjadi, ini disebut ValueError dikarenakan huruf tidak bisa dikonversi ke bentuk integer. untuk mengatasi ini kita perlu membuat blok except yang baru dan memasukkan ValueError sebagai nama exception, dengan ini program tidak akan menghasilkan error.

try:
    a = int(input('masukkan nilai a '))
    b = int(input('masukkan nilai b '))
    print('hasil a/b adalah',a/b)
except ZeroDivisionError:
    print('masukkan angka selain 0')
except ValueError:
    print('silahkan masukkan angka')

Output:

masukkan nilai a 10
masukkan nilai b r
silahkan masukkan angka

pada contoh diatas kita sudah menangani error dengan menampilkan keterangan. anda pun dapat menyimpan exception yang terjadi kedalam variabel, dan menampilkan error tersebut sebagai keterangan. berikut contohnya.

try:
    a = int(input('masukkan nilai a '))
    b = int(input('masukkan nilai b '))
    print('hasil a/b adalah',a/b)
except Exception as err:
    print(err)

Output:

masukkan nilai a 10
masukkan nilai b 0
division by zero

pada contoh diatas apapun exception yang terjadi akan disimpan kedalam variabel err dan ditampilkan sebagai keterangan, ini sangat berguna saat anda melakukan debugging.

blok kode else juga dapat ditambahkan. dalam beberapa situasi mungkin anda ingin menjalankan suatu kode, jika kode yang ada pada blok try berjalan tanpa error.

try:
    a = int(input('masukkan nilai a '))
    b = int(input('masukkan nilai b '))
except Exception as err:
    print(err)
else:
    print('hasil a/b adalah',a/b)

Output:

masukkan nilai a 10
masukkan nilai b r
invalid literal for int() with base 10: 'r'

bila anda memasukkan kedua variabel dengan angka, maka blok kode except dilewati dan blok kode else akan dieksekusi. bila anda memasukkan huruf, maka blok kode except akan dieksekusi dan blok kode else dilewati. walaupun error akan terjadi bila anda memasukkan angka nol pada penyebutnya, dikarenakan error terjadi pada blok kode else.

try, except, finally

dan yang terakhir anda dapat menambahkan blok kode finally. ini akan selalu dieksekusi apapun kasusnya.

try:
    a = int(input('masukkan nilai a '))
    b = int(input('masukkan nilai b '))
    hasil = a/b
except Exception as err:
    print(err)
else:
    print('hasil a/b adalah',hasil)
finally:
    print('blok kode finally dijalankan')

Output:

masukkan nilai a 20
masukkan nilai b 0
division by zero
blok kode finally dijalankan

pelajari lebih lanjut pada link berikut.

https://docs.python.org/3/tutorial/errors.html 

Tutorial selanjutnya kita akan membahas apa itu modul,  bagaimana cara membuat modul dan mengimport modul.

Artikel Terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.