Saat kita mulai memutuskan untuk belajar pemrograman, maka kita juga harus siap mencari permasalahan dari berbagai bentuk error yang akan kita hadapi. Dan saat kode program Python yang kita buat semakin kompleks, maka semakin besar juga kemungkinan adanya error pada program kita. Untuk itu kita perlu melakukan penanganan error pada kode Python kita. Hal ini bertujuan agar pengguna lain tidak kaget saat melihat pesan error yang mereka temukan.
Baca Juga : Python (Part 8) – Fungsi
Contoh Kasus Penanganan Error Pada Python
Mungkin sampai sini kamu masih bingung dan bertanya-tanya dan penasaran seperti apa implementasi penanganan error ini. Jadi saya akan berikan contoh gambaran seperti berikut.
Pada tulisan sebelumnya, kita sudah memiliki sebuah fungsi untuk menghitung harga barang setelah dipotong dengan diskon. Jika kamu lupa, berikut ini saya tampilkan lagi kodenya.
def hargaSetelahDiskon(harga, diskon):
hargaAkhir = harga - harga * diskon / 100
return hargaAkhir
Misalkan sebuah barang memiliki harga Rp100.000 dan kita mendapat potongan harga 10% , maka kita bisa cari tahu harga akhirnya dengan memanggil fungsi tersebut seperti ini.
print(hargaSetelahDiskon(100000, 10))

Kita bisa melihat bahwa kode kita berjalan dengan baik dan menghasilkan keluaran yang sesuai. Akan tetapi, kita harus pikirkan kemungkinan-kemungkinan lain yang dapat menyebabkan pemanggilan fungsi tersebut menghasilkan error. Bisakah kamu menebak kemungkinan itu?
Salah satu hal yang dapat menyebabkan error adalah ketika kita coba memanggil fungsi tersebut tanpa memberikan nilai apapun ke parameternya.
print(hargaSetelahDiskon())
Jika tidak ada penanganan error, maka pemanggilan tersebut akan menghasilkan error dengan pesan sebagai berikut ini.

Saat kita menerapkan penanganan error, maka output yang tampil bisa kita buat seperti ini.

Keren kan!!? Dengan begitu, pengguna tidak merasa kaget, bingung, ataupun panik ketika menemukan error atau bug yang terjadi pada kode program kita. Penasaran bagaimana caranya? Mari kita pelajari bersama..
try-except
Untuk melakukan penanganan error pada kode Python kita, setidaknya kita menggunakan dua keyword ini, yaitu try - except
. Kita wajib menggunakan dua keyword ini secara bersamaan atau berpasangan. Kita tidak dapat menggunakan try
saja tanpa except
.
Sesuai namanya, blok kode di dalam try
akan ‘dicoba’ untuk dijalankan. Jikalau pada blok try
ini menghasilkan error, maka program akan menjalankan kode di dalam blok except
.
Inilah yang kita gunakan dalam menangani error yang terjadi pada pemanggilan fungsi di atas. Kita bisa masukkan pemanggilan fungsinya pada blok try - except
seperti berikut ini.
try:
print(hargaSetelahDiskon())
except:
print("Halo, kamu harus menyertakan 'harga' dan 'diskon' dengan benar ya!")
try-except-finally
Sebenarnya ini mirip dengan yang tadi. Hanya saja kita menambahkan satu blok lagi yaitu finally
. Hal ini tidak wajib (bersifat opsional), kamu bisa menggunakannya jika kamu membutuhkannya. Blok kode finally
ini akan selalu dijalankan tanpa memperdulikan apakah akan ada error atau tidak.
Masih dengan contoh pemanggilan fungsi sebelumnya, kita coba tambahkan blok finally
seperti berikut.
try:
print(hargaSetelahDiskon())
except:
print("Halo, kamu harus menyertakan 'harga' dan 'diskon' dengan benar ya!")
finally:
print("Kode program telah selesai dijalankan.")
Saat menjalankan kode tersebut, maka output yang tampil seperti ini.

Begitu juga saat tidak ada error yang terjadi, maka program tetap menjalankan finally
.
try:
print(hargaSetelahDiskon(100000, 10))
except:
print("Halo, kamu harus menyertakan 'harga' dan 'diskon' dengan benar ya!")
finally:
print("Kode program telah selesai dijalankan.")

Menangani Beberapa Error atau Exception
Dalam penggunaannya, kita bisa menangani error atau exception secara spesifik. Hal ini memungkinkan kita mengeksekusi beberapa kode yang berbeda tergantung dari error yang terjadi.
try:
print(hargaSetelahDiskon())
except TypeError:
print("Halo, kamu harus menyertakan 'harga' dan 'diskon' dengan benar ya!")
except NameError:
print("Halo, kamu mungkin ada typo saat memanggil fungsinya!")
except:
print("Ada error yang lain")
finally:
print("Kode program telah selesai dijalankan.")
Pada kode tersebut kita mengecek dua exception yang mungkin terjadi, yaitu TypeError
dan NameError
. Exception TypeError
akan terjadi ketika fungsi menerima masukan yang kurang tepat (seperti yang sudah kita praktekkan sebelumnya). Sedangkan NameError
akan terjadi ketika ada kesalahan penulisan nama fungsi yang kita panggil. Jika terjadi error yang lainnya (selain TypeError
dan NameError
) maka akan mengeksekusi blok except yang lain, yaitu akan menampilkan "Ada error yang lain"
Kalau kita menjalankan kode tersebut maka hasilnya seperti ini.

Sedangkan saat kita mengganti blok try
menjadi seperti berikut, maka outputnya juga berbeda.
try:
print(hargasetelahdiskon(100000, 10))
# -- kode lain disembunyikan --
Program akan mendeteksi bahwa ada pemanggilan fungsi yang salah karena nama fungsi tersebut tidak akan dikenali (fungsi yang kita punya adalah hargaSetelahDiskon , sedangkan pada kode tersebut memanggil hargasetelahdiskon )

Pada contoh tersebut kita mengenali error atau exception bawaan dari Python (Built-in Exceptions). Selengkapnya mengenai Built-in Exceptions ini bisa kamu baca pada dokumentasi resminya : Built-in Exceptions — Python 3.10.7 documentation
Referensi tambahan berikut ini mungkin bisa membantumu juga dalam mempelajari penanganan error pada Python:
- Python Error Handling (w3schools.com)
- Python Exception Handling Using try, except and finally statement (programiz.com)
Nah, itu tadi sedikit tulisan singkat mengenai penanganan error pada Python. Tetap semangat belajarnya ya
Terimakasih sudah membaca dan semoga bermanfaat 🙂