Python - Menghasilkan Penyataan Pengecualian

Hai di sana, yang berhasrat menjadi Pythonistas! Hari ini, kita akan menyelam ke dunia yang menarik tentang penghasilan penyataan pengecualian di Python. Jangan khawatir jika kamu baru mengenal pemrograman – Saya akan memandu kamu melalui konsep ini langkah demi langkah, seperti yang saya lakukan untuk pelbagai pelajar selama tahun tahun penyampingan saya. Jadi, ambil atas rak sebuah rak sejenis minuman kesukaan kamu, dan mari kita melakukan petualangan Python ini bersama-sama!

Python - Raising Exceptions

Menghasilkan Penyataan Pengecualian di Python

Bayangkan jika kamu sedang memasak masakan yang sedap, tetapi tiba-tiba kamu menyadari kamu kehabisan bahan penting. Apa yang kamu lakukan? Kamu mungkin akan berhenti memasak dan memberitahu semua orang tentang masalah ini, kan? Well, itulah yang benar-benar tentang penghasilan penyataan pengecualian di Python – itu adalah cara untuk menyignal bahwa sesuatu yang tidak dijangka atau bermasalah telah terjadi di kode kamu.

Mengapa Menghasilkan Penyataan Pengecualian?

Penghasilan penyataan pengecualian membolehkan kita untuk:

  1. Menunjukkan ralat atau situasi yang luar biasa
  2. Mengawal aliran program kita
  3. Memberikan maklum balas yang bermakna kepada pengguna atau bahagian lain dari kode kita

Mari kita mula dengan contoh yang simple:

def divide(a, b):
if b == 0:
raise ValueError("Tidak boleh dibahagi oleh nol!")
return a / b

try:
result = divide(10, 0)
except ValueError as e:
print(f"Oops! Kesilapan terjadi: {e}")

Dalam contoh ini, kita menghasilkan ValueError apabila seseorang mencuba untuk membagi oleh nol. Mari kita kongsi ini:

  1. Kita define fungsi divide(a, b) yang memeriksa jika b adalah nol.
  2. Jika b adalah nol, kita menghasilkan ValueError dengan mesej suai.
  3. Kita menggunakan blok try-except untuk menangkap pengecualian dan mencetak mesej yang mesra.

Apabila kamu menjalankan kod ini, kamu akan lihat:

Oops! Kesilapan terjadi: Tidak boleh dibahagi oleh nol!

Menghasilkan Penyataan Pengecualian yang Terbina-dalam

Python datang dengan pelbagai penyataan pengecualian yang terbina-dalam yang kita boleh hasilkan. Ini adalah rak some yang umum:

Penyataan Pengecualian Keterangan
ValueError Dikeluarkan apabila fungsi menerima argumen jenis yang betul tetapi nilai yang tidak sesuai
TypeError Dikeluarkan apabila operasi atau fungsi diterapkan kepada objek jenis yang tidak sesuai
IndexError Dikeluarkan apabila subskrip penyusunan di luar julat
KeyError Dikeluarkan apabila kunci kamus tidak ditemui
FileNotFoundError Dikeluarkan apabila fail atau direktori diminta tetapi tidak wujud

Mari lihat beberapa contoh:

def check_age(age):
if not isinstance(age, int):
raise TypeError("Umur mesti merupakan integer")
if age < 0:
raise ValueError("Umur tidak boleh negatif")
print(f"Umur kamu adalah {age}")

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

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

Apabila kamu menjalankan kod ini, kamu akan lihat:

Ralat jenis: Umur mesti merupakan integer
Ralat nilai: Umur tidak boleh negatif

Menghasilkan Penyataan Pengecualian Suai

Buat kali ini, penyataan pengecualian yang terbina-dalam hanya tidak cukup. Itu apabila kita membuat penyataan pengecualian suai kami sendiri! Itu seperti menjadi juru masak dan membuat resepi yang unik kami sendiri.

Membuat Penyataan Pengecualian Suai

Untuk membuat penyataan pengecualian suai, kita hanya perlu define kelas baru yang mewarisi dari kelas Exception:

class TooManyPizzasError(Exception):
pass

def order_pizza(number):
if number > 100:
raise TooManyPizzasError("Wah! Itu terlalu banyak pizza untuk diuruskan!")
print(f"Order dikonfirmasi: {number} pizza")

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

Dalam contoh yang sedap ini:

  1. Kita define penyataan pengecualian suai TooManyPizzasError.
  2. Fungsi order_pizza kita menghasilkan penyataan pengecualian ini jika seseorang memesan lebih daripada 100 pizza.
  3. Kita tangkap pengecualian dan mencetak mesej yang mesra.

Apabila kamu menjalankan kod ini, kamu akan lihat:

Order gagal: Wah! Itu terlalu banyak pizza untuk diuruskan!

Menghasilkan Semula Penyataan Pengecualian

Buat kali ini, kamu mungkin ingin menangkap penyataan pengecualian, melakukan sesuatu dengannya, dan kemudian menghasilkannya semula untuk orang lain untuk menguruskan. Itu seperti melempar kentang panas dalam permainan!

Berikut cara kamu boleh melakukannya:

def risky_operation():
print("Mula operasi yang berisiko...")
raise ValueError("Ada yang salah!")

def perform_operation():
try:
risky_operation()
except ValueError:
print("Kesilapan ditemui, untuk log...")
raise  # Menghasilkan semula penyataan pengecualian

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

Dalam contoh ini:

  1. risky_operation() sentiasa menghasilkan ValueError.
  2. perform_operation() menangkap pengecualian, melogkan itu, dan kemudian menghasilkannya semula.
  3. Kita tangkap pengecualian yang dihasilkan semula di atas blok try-except.

Apabila kamu menjalankan kod ini, kamu akan lihat:

Mula operasi yang berisiko...
Kesilapan ditemui, untuk log...
Operasi gagal: Ada yang salah!

Dan itu adalah, rakyat! Kita telah membahas penghasilan penyataan pengecualian, penyataan pengecualian yang terbina-dalam, penyataan pengecualian suai, dan juga penghasilan semula penyataan pengecualian. Ingat, penyataan pengecualian bukan musuh kamu – mereka adalah alat yang berharga yang membantu kamu menulis kode yang kuat dan tahan terhadap ralat.

Seperti yang saya sentiasa katakan kepada pelajar saya, pemrograman adalah seperti belajar untuk bersepeda. Kamu mungkin jatuh beberapa kali, tetapi setiap ketinggalan (atau penyataan pengecualian) mengajarkan kamu sesuatu yang baru. Teruskan untuk berlatih, tetap khusyuk, dan jangan takut untuk menghasilkan beberapa penyataan pengecualian di sepanjang jalan!

Happy coding, dan may penyataan pengecualian kamu selalu bermaksud! ?✨

Credits: Image by storyset