Mengenal Statement Try Except di Python

Ridwan Fajar 13 Agustus 2016

Mengenal Statement Try Except di Python

Salah satu bentuk penangan error di Python adalah dengan menggunakan statement try..except. Mungkin kita pernah mendeteksi error dengan memanfaatkan kondisional biasa menggunakan if..else, namun hal tersebut akan lebih praktis ditangani bila dengan menggunakan try..except. Anda dapat mengurung suatu blok kode dengan try..except untuk menangani error yang mungkin kita sendiri tidak mengetahuinya. Biasanya try..except ini digunakan untuk menangani error saat penggunaan IO, operasi database, atau pengaksesan indeks suatu list atau dictionary, dan berbagai kasus lainnya.

Sekarang kita akan mengenal beberapa kasus sederhana yang menggunakan try..except.

Menangani error pembagian nol

Misalkan dalam kode berikut terjadi pembagian yang membagi suatu angka dengan nol. Sudah menjadi ketentuan bahwa jika sebuah angka dibagi nol maka program akan error. Oleh karena itu kita kurung dengan try..except, kemudian kita keluarkan error-nya begitu error tertangkap oleh except. Baris "print x+1" akan tetap dieksekusi hanya saja akan muncul error yang ditimbulkan oleh pembagian nol.
x = 0
try:
    x = 1 / 0
except Exception, e:
    print e

print x + 1

Jika kode diatas dieksekusi, maka akan muncul error seperti berikut ini:

$ python demo-1.py 
integer division or modulo by zero
1

Menangani error pembacaan file

Di kode ini kita akan mencoba menangkap dua error pada kode yang dikurung oleh try..except. Terdapat sebuah dictionary yang berisi key nama, kota, dan umur. Kemudian kita membuka sebuah file yang bernama contact.txt. Walaupun ada kode error setelahnya yang akan mengakibatkan error pengaksesan indeks, yang akan ditangkap terlebih dahulu adalah error yang diakibatkan gagalnya membaca file.
orang = {"nama":"syuaib", "kota":"jepara", "umur":"20"}

try: contact = open("contact.txt", 'r') print orang["pekerjaan"] except IOError, e: print "Terjadi error IO: ", e except KeyError, e: print "Terjadi kesalahan pada akses list/dict/tuple:", e

print orang

Bila kita eksekusi kode diatas, maka akan muncul output seperti berikut:

$ python demo-2.py 
Terjadi error IO:  [Errno 2] No such file or directory: '/home/contact.txt'
{'nama': 'syuaib', 'umur': '20', 'kota': 'jepara'}

Mengenal "finally"

Mungkin kita juga membutuhkan sebuah penanganan khusus apabila terjadi suatu error ataupun tidak pasti harus ada kode yang dieksekusi. Misal Anda ingin memutus koneksi kepada server jika terdapat error karena request yang overload atau ada struktur folder yang berubah. Sebagai contoh kita akan melihat bagaimana statement finally bekerja pada try..except. Anda dapat melihatnya pada kode berikut ini:
orang = {"nama":"syuaib", "kota":"jepara", "umur":"20"}

try: print orang["nama"] except KeyError, e: print "Terjadi error KeyError: ", e finally: print "baris ini akan selalu dieksekusi"

print orang

Jika kode diatas kita eksekusi, maka akan muncul output seperti berikut:

$ python demo-3.py 
syuaib
baris ini akan selalu dieksekusi
{'nama': 'syuaib', 'umur': '20', 'kota': 'jepara'}

Bila kita coba ganit "nama" dengan "pekerjaan", maka akan muncul output seperti berikut:

$ python demo-3.py 
Terjadi error KeyError:  'pekerjaan'
baris ini akan selalu dieksekusi
{'nama': 'syuaib', 'umur': '20', 'kota': 'jepara'}

Mengenal "raise"

Satu hal lagi yang dapat kita manfaatkan untuk membantu penangan error adalah dengan menggunakan statement raise yang dapat mengeluarkan error secara sengaja. Biasanya raise ini digunakan bersama dengan if..else atau pemeriksaan kondisi lainnya. Objek error yang dapat dilemparkan beragam macamnya. Anda dapat melempar error NetworkError, KeyError, ImportError, IOError, atau error lainnya.

Misal pada kode dibawah ini, kita akan mencoba melemparkan error ValueError dengan memasukkan nilai -99999. Kemudian saat pemeriksaan, apabila nilai kurang dari nol maka akan muncul error.

nilai = -999999

try:
    print "baris ini akan di print"
    if nilai < 0:
        raise ValueError, nilai
    print "baris ini tidak akan di print"
except Exception, e:
    print e
finally:
    print "Ada error mas"

Bila kode diatas kita eksekusi di konsol maka akan muncul output seperti berikut:

$ python demo-4.py 
baris ini akan di print
-999999
Ada error mas

(rfs/python)