Python - Mengangkat Pengecualian

Halo semuanya, para pemula Python! Hari ini, kita akan menyelam ke dunia yang menarik tentang pengangkatan pengecualian di Python. Jangan khawatir jika Anda baru mengenal pemrograman – saya akan memandu Anda melalui konsep ini langkah demi langkah, sama seperti yang saya lakukan untuk banyak siswa selama tahun-tahun pengajaran saya. Jadi, ambil secangkir minuman kesukaan Anda, dan mari kita mulai petualangan Python ini bersama-sama!

Python - Raising Exceptions

Mengangkat Pengecualian di Python

Bayangkan Anda sedang memasak makanan yang lezat, tetapi tiba-tiba Anda menyadari Anda kehabisan bahan penyusun yang krusial. Apa yang Anda lakukan? Anda mungkin akan berhenti memasak dan memberitahu semua orang tentang masalah ini, kan? Baiklah, itulah yang sama dengan pengangkatan pengecualian di Python – itu adalah cara untuk menyinyal bahwa ada hal yang tak terduga atau problematis telah terjadi di kode Anda.

Mengapa Mengangkat Pengecualian?

Mengangkat pengecualian memungkinkan kita untuk:

  1. Menandakan kesalahan atau situasi yang tidak biasa
  2. Mengontrol alur program kita
  3. Memberikan umpan balik yang berarti kepada pengguna atau bagian lain dari kode kita

Mari kita mulai dengan contoh sederhana:

def bagi(a, b):
if b == 0:
raise ValueError("Tidak dapat membagi dengan nol!")
return a / b

try:
hasil = bagi(10, 0)
except ValueError as e:
print(f"Ups! Terjadi kesalahan: {e}")

Dalam contoh ini, kita mengangkat ValueError ketika seseorang mencoba untuk membagi dengan nol. Mari kita pecahkan:

  1. Kita definisikan fungsi bagi(a, b) yang memeriksa jika b adalah nol.
  2. Jika b adalah nol, kita mengangkat ValueError dengan pesan khusus.
  3. Kita menggunakan blok try-except untuk menangkap pengecualian dan mencetak pesan yang ramah.

Ketika Anda menjalankan kode ini, Anda akan lihat:

Ups! Terjadi kesalahan: Tidak dapat membagi dengan nol!

Mengangkat Pengecualian Bawaan

Python datang dengan berbagai jenis pengecualian bawaan yang kita dapat angkat. Berikut adalah tabel beberapa yang umum:

Pengecualian Deskripsi
ValueError Diangkat ketika fungsi menerima argumen dengan jenis yang benar tetapi nilai yang tidak sesuai
TypeError Diangkat ketika operasi atau fungsi diterapkan ke objek dengan jenis yang tidak sesuai
IndexError Diangkat ketika subskripsi urutan di luar jangkauan
KeyError Diangkat ketika kunci kamus tidak ditemukan
FileNotFoundError Diangkat ketika file atau direktori diminta tetapi tidak ada

Mari kita lihat beberapa contoh:

def cek_usia(usia):
if not isinstance(usia, int):
raise TypeError("Usia harus berupa integer")
if usia < 0:
raise ValueError("Usia tidak boleh negatif")
print(f"Usia Anda adalah {usia}")

try:
cek_usia("dua puluh")
except TypeError as e:
print(f"Kesalahan jenis: {e}")

try:
cek_usia(-5)
except ValueError as e:
print(f"Kesalahan nilai: {e}")

Ketika Anda menjalankan kode ini, Anda akan lihat:

Kesalahan jenis: Usia harus berupa integer
Kesalahan nilai: Usia tidak boleh negatif

Mengangkat Pengecualian Khusus

Terkadang, pengecualian bawaan tidak cukup. Itulah saat kita membuat pengecualian khusus kita sendiri! Itu seperti menjadi seorang chef dan membuat resep khusus kita sendiri.

Membuat Pengecualian Khusus

Untuk membuat pengecualian khusus, kita cukup mendefinisikan kelas baru yang mewarisi kelas Exception:

class TerlaluBanyakPizzaError(Exception):
pass

def order_pizza(jumlah):
if jumlah > 100:
raise TerlaluBanyakPizzaError("Whoa! Itu terlalu banyak pizza untuk ditangani!")
print(f"Order dikonfirmasi: {jumlah} pizza")

try:
order_pizza(101)
except TerlaluBanyakPizzaError as e:
print(f"Order gagal: {e}")

Dalam contoh yang lezat ini:

  1. Kita definisikan pengecualian khusus TerlaluBanyakPizzaError.
  2. Fungsi order_pizza mengangkat pengecualian ini jika seseorang memesan lebih dari 100 pizza.
  3. Kita tangkap pengecualian dan mencetak pesan yang ramah.

Ketika Anda menjalankan kode ini, Anda akan lihat:

Order gagal: Whoa! Itu terlalu banyak pizza untuk ditangani!

Mengangkat Ulang Pengecualian

Terkadang, Anda mungkin ingin menangkap pengecualian, melakukan sesuatu dengan itu, dan kemudian mengangkat ulang untuk ditangani oleh orang lain. Itu seperti melempar wortel panas dalam permainan!

Berikut cara Anda melakukan itu:

def operasi_resiko():
print("Memulai operasi resiko...")
raise ValueError("Ada yang salah!")

def melakukan_operasi():
try:
operasi_resiko()
except ValueError:
print("Kesalahan ditangkap, melogkan...")
raise  # Mengangkat ulang pengecualian

try:
melakukan_operasi()
except ValueError as e:
print(f"Operasi gagal: {e}")

Dalam contoh ini:

  1. operasi_resiko() selalu mengangkat ValueError.
  2. melakukan_operasi() menangkap pengecualian, melogkan, dan kemudian mengangkat ulang.
  3. Kita tangkap pengecualian yang diangkat ulang di blok try-except luar.

Ketika Anda menjalankan kode ini, Anda akan lihat:

Memulai operasi resiko...
Kesalahan ditangkap, melogkan...
Operasi gagal: Ada yang salah!

Dan itu adalah, teman-teman! Kita telah membahas mengenai pengangkatan pengecualian, pengecualian bawaan, pengecualian khusus, dan bahkan pengangkatan ulang pengecualian. Ingat, pengecualian bukan musuh Anda – itu adalah alat yang berharga yang membantu Anda menulis kode yang tangguh dan tahan terhadap kesalahan.

Seperti yang saya selalu katakan kepada siswa saya, pemrograman adalah seperti belajar untuk bersepeda. Anda mungkin akan kalah beberapa kali, tetapi setiap kalah (atau pengecualian) mengajarkan Anda sesuatu yang baru. Tetap berlatih, tetap curious, dan jangan takut untuk mengangkat beberapa pengecualian di jalan Anda!

Selamat coding, dan semoga pengecualian Anda selalu bersifat sengaja! ?✨

Credits: Image by storyset