Penanganan Kesalahan (Error and Exception Handling) di Python


Ada setidaknya dua jenis kesalahan berdasarkan kejadiannya: 
  1. Kesalahan sintaksis (syntax errors) atau sering disebut kesalahan penguraian (parsing errors)
  2. Pengecualian (exceptions) atau sering disebut kesalahan saat beroperasi (runtime errors)
Kesalahan sintaksis terjadi ketika Python tidak dapat mengerti apa yang Anda perintahkan. Sedangkan pengecualian (kesalahan saat beroperasi) terjadi ketika Python mengerti apa yang Anda perintahkan tetapi mendapatkan masalah saat mengikuti yang Anda perintahkan (terjadi saat aplikasi sudah mulai beroperasi).

Kesalahan Sintaksis

Kesalahan sintaksis biasanya sering terjadi saat Anda masih baru memulai belajar Python, misalnya contoh berikut adalah penempatan indentasi (spasi di awal) yang tidak sesuai.

  1. print('salah indentasi')

  2.  File "<stdin>", line 1

  3.    print('salah indentasi')

  4.    ^

  5. IndentationError: unexpected indent


Contoh berikut ini menampilkan kesalahan sintaksis, dimana setelah kondisi dari perintah while diharuskan ada tanda titik dua (:).

  1. while True print('Hello world')

  2.  File "<stdin>", line 1

  3.    while True print('Hello world')

  4.                   ^

  5. SyntaxError: invalid syntax


Pada kesalahan sintaksis, baris dimana kesalahan terdeteksi dimunculkan kembali, kemudian terdapat tanda panah yang menunjukkan titik paling awal dari kesalahan.
Kedua contoh di atas memiliki kelompok (tipe) kesalahan yang berbeda, yang pertama adalah IndentationError dan yang kedua adalah SyntaxError. Kemudian setelah penyebutannya, ada pesan detail kesalahan (keterangan), misalnya indentasi yang tidak diharapkan (unexpected).
Jika Anda menggunakan mode pemanggilan skrip, nama file skrip dan nomor baris dimana terjadi kesalahan akan dimunculkan. Sedangkan untuk mode interaktif pada dua contoh di atas, nama file muncul sebagai “<stdin>”. Berikut adalah contoh pada pemanggilan skrip bernama contoh_salah_sintaksis.py dimana terjadi kesalahan pada baris 2.

  1. python contoh_salah_sintaksis.py  

  2.  File "contoh_salah_sintaksis.py", line 2

  3.    if True print('salah sintaksis')

  4.                ^

  5. SyntaxError: invalid syntax



Pengecualian

Meski pernyataan atau ekspresi dari Python sudah Anda tulis dengan benar, ada kemungkinan terjadi kesalahan ketika perintah tersebut dieksekusi. Kesalahan yang terjadi saat proses sedang berlangsung disebut pengecualian (exceptions) dan akan berakibat fatal jika tidak ditangani. Kebanyakan pengecualian di Python tidak ditangani oleh aplikasi, sehingga aplikasi terhenti kemudian muncul pesan kesalahan seperti contoh berikut.

  1. print(angka)

  2. Traceback (most recent call last):

  3.  File "<stdin>", line 1, in <module>

  4. NameError: name 'angka' is not defined


Misalkan Anda lupa memberikan nilai pada variabel angka, tetapi Anda langsung memanggil variabel tersebut. Secara sintaksis sudah sesuai, tapi muncul pengecualian dengan kelompok (tipe) kesalahan NameError dan pesan detail kesalahan yang menyatakan bahwa variabel angka tidak terdefinisi.
Contoh lain terkait pengecualian yang sering juga terjadi adalah operasi dari variabel yang jenisnya tidak sesuai, misalnya contoh berikut.

  1. bukan_angka = '1'

  2. bukan_angka + 2

  3. Traceback (most recent call last):

  4.  File "<stdin>", line 1, in <module>

  5. TypeError: can only concatenate str (not "int") to str


Pada contoh tersebut, variabel bukan_angka berjenis string, sehingga saat mengoperasikan variabel tersebut dengan angka (berjenis integer), meskipun secara sintaksis sudah sesuai, muncul pengecualian dengan kelompok (tipe) kesalahan TypeError dan pesan detail kesalahan yang menyatakan bahwa operasi penambahan untuk string (contatetation) hanya bisa dilakukan jika kedua operannya adalah string (dan bukan integer).
Seperti terlihat bahwa pada saat terjadi pengecualian, informasi yang muncul seperti saat terjadi kesalahan (errors), termasuk juga informasi nama file dan nomor baris dimana kesalahan terjadi.

*

Post a Comment (0)
Previous Post Next Post