Overview
Tidak ada kode yang sempurna dan kesalahan pasti akan terjadi. Namun, dengan memahami try-except Python, kita dapat menangani kesalahan tersebut dengan baik dan bahkan menggunakannya sebagai peluang untuk belajar dan memperbaiki kode kita.
Saat mengolah data atau menulis skrip Python, kita pasti pernah menemui berbagai hambatan dalam bentuk kesalahan atau 'eksepsi'. Jika tidak ditangani dengan baik, eksepsi-eksepsi ini dapat menghambat proses dan mempersulit pekerjaan kita.
Disinilah try-except Python berperan.
Dalam artikel ini, kita akan membahas tentang try-except Python, sebuah fitur yang membantu kamu menangani eksepsi dalam kode Python. Kita akan membahas konsep dasar, cara menggunakan, sampai contohnya. Selamat membaca!
Apa itu Try-Except?
Try-except adalah konsep dalam pemrograman Python yang digunakan untuk menangani error atau eksepsi.
Saat bekerja dengan data, akan ada banyak situasi di mana kamu mungkin menemukan error atau kesalahan dalam menjalankan kode. Itulah sebabnya kamu memerlukan try-except.
Konsep dasar dari try-except sangatlah sederhana. Bagian 'try' digunakan untuk mengeksekusi potongan kode yang mungkin menimbulkan error. Sementara bagian 'except' dipakai untuk menangkap dan menangani error tersebut.
Dengan kata lain, kamu 'mencoba' menjalankan suatu kode. Jika ada masalah atau 'eksepsi', kamu memiliki rencana cadangan untuk menanganinya.
Dalam praktiknya, penggunaan try-except Python bukan hanya tentang menangani error. Lebih dari itu, fitur ini juga membuat kode menjadi lebih kuat dan tahan terhadap potensi masalah. Melalui penanganan eksepsi yang tepat, kamu dapat membuat program menjadi lebih stabil dan dapat dipercaya.
Syntax Try-Except
Berikut syntax dasar dari blok try-except di Python:
Dari syntax di atas, bagian 'try' berisi kode yang mungkin menghasilkan eksepsi. Bagian ini akan dijalankan oleh Python. Jika ada eksepsi yang terjadi, Python akan berhenti menjalankan kode dalam blok 'try' dan pindah ke blok 'except'.
Bagian 'except' menentukan apa yang harus dilakukan ketika eksepsi tertentu terjadi. Kamu juga dapat menentukan beberapa blok 'except' untuk menangani berbagai jenis eksepsi.
Selain 'try' dan 'except', ada dua bagian opsional lainnya dalam blok try-except, yaitu 'else' dan 'finally'.
'else' adalah bagian yang akan dijalankan saat kode dalam blok 'try' tidak menimbulkan eksepsi. Bagian ini dipakai untuk menempatkan kode yang kamu ingin jalankan apabila tidak ditemukan error atau eksepsi.
Bagian 'finally' adalah bagian yang akan selalu dijalankan, baik ada eksepsi maupun tidak. Biasanya, bagian ini digunakan untuk membersihkan sumber daya dan menutup koneksi file atau database.
Contoh Penggunaan Try Except untuk Mengatasi Kesalahan Umum
Saat analisis data, ada berbagai jenis kesalahan umum yang bisa terjadi. Kita akan membahas beberapa di antaranya.
TypeError
Kesalahan ini terjadi ketika kamu mencoba melakukan operasi pada tipe data yang tidak sesuai. Misalnya, menjumlahkan angka dengan string akan menghasilkan TypeError.
Berikut contoh penggunaannya:
Dalam contoh di atas, Python akan mencoba menjalankan kode dalam blok 'try'. Namun, karena kita mencoba menjumlahkan integer dengan string, terjadi TypeError.
Python kemudian akan menjalankan blok 'except' dan akan muncul output: "Terjadi TypeError, pastikan kamu menjumlahkan dua angka."
FileNotFoundError
Kesalahan ini muncul saat Python tidak dapat menemukan file yang ingin kamu buka.
Contoh:
Jika file yang disebutkan tidak ada, Python akan menghasilkan FileNotFoundError. Ketika ini terjadi, blok 'except' akan dieksekusi dan output-nya adalah: "File tidak ditemukan. Pastikan kamu memasukkan path yang benar."
ZeroDivisionError
Kesalahan ini muncul saat kamu mencoba membagi suatu angka dengan nol.
Contoh:
Saat Python mencoba menjalankan kode dalam blok 'try', akan terjadi ZeroDivisionError. Setelahnya, blok 'except' dieksekusi dan output yang kita lihat adalah:
"kamu mencoba membagi dengan nol. Ini tidak dapat dilakukan."
KeyError
Kesalahan ini terjadi saat kamu mencoba mengakses elemen dictionary dengan kunci yang tidak ada di dalamnya.
Contoh penggunaan:
Jika kunci yang kamu coba akses tidak ada dalam dictionary, Python akan menampilkan KeyError. Ketika ini terjadi, blok 'except' akan dieksekusi dan output-nya adalah:
"Kunci yang kamu coba akses tidak ada dalam dictionary."
Mengenal Exception Objects
Ketika terjadi kesalahan atau eksepsi dalam Python, program akan membuat exception objects untuk mewakili kesalahan tersebut. Objek eksepsi ini berisi detail tentang kesalahan yang terjadi, sehingga membantu kita dalam mendiagnosis dan memperbaiki kesalahan tersebut.
Exception objects dapat diakses dalam blok 'except' dengan menggunakan syntax berikut:
Dalam syntax di atas, 'Exception' adalah kelas dasar untuk semua jenis eksepsi dan 'e' adalah variabel yang merujuk ke objek eksepsi yang dibuat ketika terjadi kesalahan.
Contoh Penggunaan Try-Except
Berikut beberapa contoh penggunaan try-except dalam skenario pemrograman Python.
Menangani kesalahan saat membaca file
Saat bekerja dengan data, analyst akan sering membaca file. Jika file tersebut tidak ada atau tidak bisa diakses, Python akan menimbulkan FileNotFoundError.
Dalam contoh di atas, apabila file CSV tidak ditemukan, program akan menjalankan blok 'except' dan pesan kesalahan akan ditampilkan:
"Terjadi kesalahan: [Errno 2] File file_tidak_ada.csv does not exist: 'file_tidak_ada.csv'".
Menangani kesalahan saat mengakses API
API sering dipakai untuk mengambil data. Kesalahan jaringan atau masalah lain dapat menghasilkan eksepsi.
Di atas, jika ada masalah saat mengakses API (misalnya, situs tidak ditemukan atau permintaan waktu habis), blok 'except' akan menangkap eksepsi dan menampilkan output yang menyatakan terjadi kesalahan.
Menangani kesalahan saat memproses data tidak valid
Ketika memproses data, kamu mungkin menemui data yang tidak valid atau tidak sesuai dengan yang kamu harapkan.
Dalam contoh ini, kita mencoba mengubah nilai dalam dictionary menjadi integer. Namun, karena nilai tersebut adalah string dan tidak dapat diubah menjadi integer, Python akan menimbulkan ValueError.
Blok 'except' akan menangkap eksepsi ini dan menampilkan hasil:
"Terjadi kesalahan: invalid literal for int() with base 10: 'tiga puluh'".
Menggunakan raise untuk memicu exception sendiri
Selain menangani eksepsi yang dibuat oleh sistem atau library, kita juga bisa memicu eksepsi sendiri dengan menggunakan raise. Ini berguna jika kita ingin memaksa program untuk menghasilkan eksepsi khusus jika kondisi tertentu terpenuhi.
Pada contoh di atas, jika umur lebih kecil dari 0, kita memicu ValueError dengan pesan "Umur tidak boleh negatif". Blok 'except' kemudian menangkap eksepsi ini dan menampilkan pesan kesalahan: "Terjadi kesalahan: Umur tidak boleh negatif".
Tips dalam Penanganan Kesalahan
Sebelum membahas tips dalam menangani kesalahan, kamu perlu mengetahui beberapa jenis pengecualian (exception) yang sering muncul:
- AssertionError: muncul ketika pernyataan 'assert' gagal.
- AttributeError: muncul ketika penugasan atau referensi atribut gagal.
- EOFError: muncul ketika fungsi 'input()' mencapai kondisi end-of-file.
- FloatingPointError: muncul ketika operasi titik floating gagal.
- ImportError: muncul ketika modul yang diimpor tidak ditemukan.
- IndexError: muncul ketika indeks dari sebuah urutan berada di luar jangkauan.
- KeyError: muncul ketika kunci tidak ditemukan dalam dictionary.
- MemoryError: muncul ketika operasi kehabisan memori.
- NameError: muncul ketika variabel tidak ditemukan dalam ruang lingkup lokal atau global.
- OverflowError: muncul ketika hasil dari operasi aritmatika terlalu besar untuk dapat direpresentasikan.
- RuntimeError: muncul ketika kesalahan tidak termasuk dalam kategori lain.
- StopIteration: muncul di fungsi 'next()' untuk menunjukkan bahwa tidak ada item lagi yang dapat dikembalikan oleh iterator.
- SyntaxError: muncul oleh parser ketika kesalahan sintaks ditemui.
- IndentationError: muncul ketika ada indentasi yang salah.
- TabError: muncul ketika indentasi terdiri dari tab dan spasi yang tidak konsisten.
- SystemError: muncul ketika interpreter mendeteksi kesalahan internal.
- TypeError: muncul ketika suatu fungsi atau operasi diterapkan pada objek dengan tipe yang salah.
- ValueError: muncul ketika suatu fungsi mendapatkan argumen dengan tipe yang benar tetapi nilainya tidak sesuai.
- ZeroDivisionError: muncul ketika operan kedua dari operasi pembagian atau modulo adalah nol.
Selanjutnya, berikut beberapa tips yang dapat membantu kamu dalam menangani kesalahan dalam pemrograman Python seperti di atas:
Berikan pesan kesalahan yang informatif
Saat menangkap eksepsi dengan try-except, berikan pesan kesalahan yang jelas dan informatif. Pesan ini tidak hanya membantu kamu untuk debug, tetapi juga berguna memahami kesalahan apa yang terjadi.
Misalnya, bukan hanya mencetak "Terjadi kesalahan", tetapi tambahkan detail seperti jenis kesalahan dan di mana itu terjadi.
Dalam contoh di atas, pesan kesalahan menginformasikan bahwa ada ZeroDivisionError dan juga memberikan detail kesalahannya.
Tangani kesalahan secara spesifik
Usahakan untuk selalu menangani setiap jenis kesalahan secara khusus. Tips ini memungkinkan kamu memberikan tanggapan yang lebih spesifik dan tepat.
Contoh di atas menangani dua jenis kesalahan berbeda dengan pesan yang juga berbeda. Langkah ini lebih informatif dibandingkan hanya menggunakan satu blok 'except' untuk semua jenis kesalahan.
Pertimbangkan untuk menggunakan blok 'else' dan 'finally'
Jika tidak ada eksepsi yang terjadi, blok 'else' memungkinkan kamu menulis kode yang akan dijalankan. Di sisi lain, blok 'finally' diterapkan untuk menulis kode yang akan selalu dijalankan, tanpa mempertimbangkan ada eksepsi atau tidak.
Penggunaan kedua blok ini berguna untuk membersihkan sumber daya atau melakukan tindakan penutup, seperti menutup file atau koneksi jaringan.
Pada contoh di atas, jika file berhasil dibuka, data akan dibaca dan muncul pesan "Data berhasil dibaca". Apapun yang terjadi, file tersebut akan selalu ditutup dan muncul pesan "File telah ditutup".
Dengan menerapkan tips ini, kamu dapat menangani kesalahan dengan lebih efektif dan kode lebih mudah dibaca serta dipahami.
FAQ (Frequently Ask Question)
Bagaimana cara menangani berbagai jenis kesalahan secara berbeda?
Dalam konteks ini, kamu bisa menuliskan lebih dari satu blok 'except'. Setiap blok 'except' akan menangani jenis kesalahan yang berbeda.
Apakah try-except Python hanya digunakan untuk menangani kesalahan?
Meski fungsi utamanya adalah menangani kesalahan, try-except juga bisa digunakan sebagai kontrol alur program. Misalnya, kita dapat mencoba melakukan suatu aksi. Jika gagal, kita bisa melakukan aksi lain sebagai gantinya.
Penutup
Tidak ada kode yang sempurna dan kesalahan pasti akan terjadi. Namun, dengan memahami try-except Python, kita dapat menangani kesalahan tersebut dengan baik dan bahkan menggunakannya sebagai peluang untuk belajar dan memperbaiki kode kita.
Menggunakan try-except dengan efektif bukan hanya tentang mencegah program dari crash, tetapi juga membuat kode lebih terstruktur dan mudah dibaca anggota tim analyst lain.
Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!
Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)
Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!
Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)
Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!
Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)