Python - Penanganan Eksepsi
Halo, para penyihir Python masa depan! Saya sangat senang menjadi pemandu Anda dalam perjalanan yang menarik ini ke dunia penanganan eksepsi Python. Sebagai seseorang yang telah mengajar pemrograman selama tahun-tahun, saya bisa memberitahu Anda bahwa memahami eksepsi adalah seperti belajar bersepeda dengan rakit penyusun - mungkin terlihat sulit pada awalnya, tetapi sekali Anda menguasainya, Anda akan berjalan lancar dalam waktu singkat!
Apa itu Eksepsi?
Sebelum kita melompat ke dasar, mari kita mulai dengan yang dasar-dasar. Bayangkan Anda sedang membuat kue (tetap bersamaku di sini, saya berjanji ini berkaitan dengan Python!). Anda punya resep (kode Anda), bahan-bahan (data Anda), dan Anda sudah siap. Tetapi apa yang terjadi jika Anda kehabisan telur di tengah jalan? Itu adalah eksepsi dalam dunia memasak!
Di Python, eksepsi adalah kesalahan yang terjadi selama eksekusi program. Itu seperti tanda merah yang muncul dan mengatakan, "Woi! Ada yang tidak benar di sini!"
Mari kita lihat contoh sederhana:
print(10 / 0)
Jika Anda menjalankan kode ini, Python akan mengangkat ZeroDivisionError
. Itu mengatakan, "Hey, Anda tidak bisa membagi dengan nol! Itu tidak diizinkan di dapur saya... Saya maksud, lingkungan pemrograman!"
Penanganan Eksepsi di Python
Sekarang bahwa kita tahu apa itu eksepsi, mari kita belajar bagaimana mengatasinya dengan sopan. Di Python, kita menggunakan blok try
dan except
untuk menangkap dan menangani eksepsi.
Inilah struktur dasarnya:
try:
# Kode yang mungkin mengangkat eksepsi
except jenisEksepsi:
# Kode untuk menangani eksepsi
Mari kita modifikasi contoh sebelumnya:
try:
hasil = 10 / 0
print(hasil)
except ZeroDivisionError:
print("Ups! Anda tidak bisa membagi dengan nol.")
Ketika Anda menjalankan kode ini, bukannya kres, itu akan mencetak: "Ups! Anda tidak bisa membagi dengan nol."
klausa except Tanpa Eksepsi
Terkadang, Anda mungkin ingin menangkap semua eksepsi yang terjadi. Dalam kasus ini, Anda dapat menggunakan klausa except
tanpa menentukan jenis eksepsi:
try:
# Beberapa kode berisiko
x = int(input("Masukkan angka: "))
y = 10 / x
print(y)
except:
print("Ada yang salah!")
Ini akan menangkap semua eksepsi yang terjadi di blok try
. Namun, secara umum lebih baik untuk menangkap eksepsi spesifik saat Anda bisa, karena itu membuat kode Anda lebih presis dan lebih mudah untuk 디버깅.
klausa except Dengan Beberapa Eksepsi
Anda juga dapat menangani beberapa eksepsi dalam satu klausa except
:
try:
x = int(input("Masukkan angka: "))
y = 10 / x
print(y)
except (ValueError, ZeroDivisionError):
print("Input tidak valid atau pembagian oleh nol!")
Kode ini akan menangkap kedua ValueError
(jika pengguna memasukkan nilai non-angka) dan ZeroDivisionError
.
klausa try-finally
klausa finally
digunakan untuk kode yang harus dieksekusi terlepas dari apakah terjadi eksepsi atau tidak. Itu seperti regu pembersihan setelah pesta - itu selalu muncul, terlepas dari bagaimana pesta berlangsung!
try:
f = open("contoh.txt", "r")
# Lakukan beberapa operasi pada file
except FileNotFoundError:
print("File tidak ada!")
finally:
f.close() # Ini akan selalu dieksekusi, bahkan jika terjadi eksepsi
Argumen Eksepsi
Eksepsi dapat membawa informasi tambahan. Anda dapat mengakses informasi ini di blok except
Anda:
try:
x = 10 / 0
except ZeroDivisionError as e:
print(f"Terjadi kesalahan: {e}")
Ini akan mencetak: "Terjadi kesalahan: pembagian oleh nol"
Mengangkat Eksepsi
Terkadang, Anda mungkin ingin mengangkat eksepsi sendiri. Itu seperti menjadi wasit dalam pertandingan dan mendeklarasikan pelanggaran:
def cek_usia(usia):
if usia < 0:
raise ValueError("Umur tidak bisa negatif!")
print(f"Umur Anda adalah {usia}")
try:
cek_usia(-5)
except ValueError as e:
print(e)
Ini akan mencetak: "Umur tidak bisa negatif!"
Eksepsi Yang Ditentukan Pengguna
Anda juga dapat membuat tipe eksepsi Anda sendiri. Itu seperti menciptakan aturan baru dalam permainan:
class TerlaluBanyakPizzaError(Exception):
pass
def pesan_pizza(jumlah):
if jumlah > 100:
raise TerlaluBanyakPizzaError("Anda tidak bisa memesan lebih dari 100 pizza!")
print(f"Order untuk {jumlah} pizza berhasil.")
try:
pesan_pizza(101)
except TerlaluBanyakPizzaError as e:
print(e)
Assertions di Python
Assertions adalah cara untuk memastikan bahwa kondisi tertentu dipenuhi. Mereka seperti titik pemeriksaan kecil di kode Anda:
def bagi(a, b):
assert b != 0, "Pembagi tidak bisa nol!"
return a / b
try:
hasil = bagi(10, 0)
except AssertionError as e:
print(e)
Ini akan mencetak: "Pembagi tidak bisa nol!"
Eksepsi Standar
Python datang dengan sekumpulan eksepsi bawaan. Berikut adalah beberapa yang paling umum:
Nama Eksepsi | Deskripsi |
---|---|
ZeroDivisionError | Diangkat saat pembagian atau modulo oleh nol terjadi |
ValueError | Diangkat saat fungsi mendapat argumen jenis yang benar tetapi nilai yang tidak benar |
TypeError | Diangkat saat operasi atau fungsi diterapkan ke objek jenis yang tidak sesuai |
NameError | Diangkat saat nama lokal atau global tidak ditemukan |
FileNotFoundError | Diangkat saat file atau direktori diminta tetapi tidak ada |
IndexError | Diangkat saat subskripsi urutan di luar jangkauan |
KeyError | Diangkat saat kunci kamus tidak ditemukan |
ImportError | Diangkat saat pernyataan impor gagal |
Dan itu adalah, teman-teman! Anda baru saja menyelesaikan kelas kencang Anda dalam penanganan eksepsi Python. Ingat, eksepsi bukan musuh Anda - mereka lebih seperti papan tanda yang membantu mengarahkan Anda ke kode yang lebih baik dan lebih robust. Tetap latihan, tetap eksperimen, dan segera Anda akan menangani eksepsi seperti seorang profesional. Selamat coding!
Credits: Image by storyset