banner-segalahal-python-penanganan-error

Python (Part 9) – Penanganan Error

Diposting pada 2.098 views

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))
output function_belanja.py

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.

terjadi error ketika tidak memberikan parameter pada fungsinya

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

memanggil fungsi dengan penanganan error

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.

Output kode dengan tryexcept finally dengan blok except yang dijalankan

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.")
Output kode dengan tryexcept finally dengan blok try yang 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.

penanganan exception TypeError

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 )

Penanganan Exception NameError

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:

Nah, itu tadi sedikit tulisan singkat mengenai penanganan error pada Python. Tetap semangat belajarnya ya

Terimakasih sudah membaca dan semoga bermanfaat 🙂