Python - Blok Try-Except

Helo, pembina masa depan Python! Saya sangat gembira untuk membimbing anda melalui dunia yang menarik penanganan ralat di Python. Sebagai guru sains komputer yang ramah di lingkungan anda, saya telah melihat banyak pelajar kesusahan atas ralat, tetapi jangan takut! Pada akhir tutorial ini, anda akan mengurus pengecualian seperti profesional. Mari kita masuk!

Python - try-except Block

Python Blok Try-Except

Bayangkan anda sedang memasak resepi baru. Anda tidak pasti jika anda memiliki semua bahan, tetapi anda masih mahu untuk mencuba. Itulah persis apa yang blok try-except lakukan di Python - ia membolehkan anda untuk mencuba beberapa kod dan menguruskan sebarang ralat potensial dengan sopan.

Struktur asasnya adalah seperti berikut:

try:
# Kod yang mungkin menyebabkan pengecualian
except:
# Kod untuk menguruskan pengecualian

Mari kita lihat contoh yang simple:

try:
number = int(input("Masukkan nombor: "))
result = 10 / number
print(f"10 dibahagi oleh {number} adalah {result}")
except:
print("Oops! Ada yang salah.")

Dalam kod ini:

  1. Kita meminta pengguna untuk memasukkan nombor.
  2. Kita cuba untuk membagi 10 dengan nombor itu.
  3. Jika ada apa-apa yang salah (seperti memasukkan nol atau bukan nombor), kita tangkap ralat dan cetak mesej yang mesra.

Cuba jalankan kod ini dengan input yang berbeza. Masukkan 2, kemudian 0, kemudian "pisang". Lihat bagaimana ia menguruskan setiap kes?

Menguruskan Pengecualian Berbilang

Sekarang, mari kita menjadi lebih spesifik. Jenis-jenis ralat yang berbeza boleh berlaku, dan kita mungkin mahu menguruskan mereka dengan cara yang berbeza. Ia seperti memiliki rak obat penyakit yang berbeza untuk jenis-jenis luka yang berbeza.

try:
number = int(input("Masukkan nombor: "))
result = 10 / number
print(f"10 dibahagi oleh {number} adalah {result}")
except ValueError:
print("Itu bukan nombor yang sah!")
except ZeroDivisionError:
print("Anda tidak boleh membagi dengan nol!")
except:
print("Ada yang lain yang salah.")

Di sini, kita menguruskan tiga senario:

  1. Jika pengguna memasukkan sesuatu yang bukan nombor (ValueError)
  2. Jika pengguna memasukkan nol (ZeroDivisionError)
  3. Sebarang ralat yang tidak dijangka

Jalankan kod ini dengan input seperti "lima", 0, 2, dan lihat bagaimana ia bertindak balas secara berbeza!

Menggunakan klausa Else dengan Blok Try-Except

Ada masa kita mahu menjalankan beberapa kod hanya jika tiada pengecualian yang berlaku. Itulah di mana klausa else menjadi berguna. Pikirkan tentang itu sebagai hadiah untuk apabila semua berjalan dengan lancar!

try:
number = int(input("Masukkan nombor positif: "))
if number <= 0:
raise ValueError("Itu bukan nombor positif!")
result = 10 / number
except ValueError as ve:
print(f"Ralat: {ve}")
except ZeroDivisionError:
print("Anda tidak boleh membagi dengan nol!")
else:
print(f"10 dibahagi oleh {number} adalah {result}")
print("Terima kasih untuk memasukkan nombor yang sah!")

Dalam contoh ini:

  1. Kita periksa jika nombor adalah positif.
  2. Jika ia bukan, kita naikkan ValueError sendiri.
  3. Jika tiada pengecualian berlaku, blok else dijalankan, memberikan mesej yang baik.

Klausa Finally

Terakhir tetapi tidak ketinggalan, kenalpasti klausa finally. Blok kod ini akan dijalankan tanpa mengira jika pengecualian berlaku atau tidak. Ia seperti membersihkan selepas memasak, sama ada resepi itu adalah kejayaan atau kesusahan.

try:
file = open("important_data.txt", "r")
content = file.read()
result = 10 / int(content)
except FileNotFoundError:
print("Fail itu tidak wujud!")
except ValueError:
print("Fail itu tidak mengandungi nombor yang sah!")
except ZeroDivisionError:
print("Nombor di atas fail adalah nol!")
else:
print(f"Hasilnya adalah: {result}")
finally:
print("Menutup fail...")
file.close()

Dalam contoh ini:

  1. Kita cuba untuk membuka fail dan membaca nombor darinya.
  2. Kita menguruskan berbagai ralat potensial.
  3. Jika berjaya, kita cetak hasilnya.
  4. Tak kira apa yang berlaku, kita pastikan untuk menutup fail di atas blok finally.

Ringkasan Metode Penanganan Pengecualian

Berikut adalah rakam yang mudah untuk menyusun metode penanganan pengecualian yang kita telah pelajari:

Method Description Use Case
try Mengikut kod yang mungkin memunculkan pengecualian Selalu digunakan dengan except, else, atau finally
except Menguruskan pengecualian khusus Menangkap dan menguruskan ralat
else Berjalan jika tiada pengecualian berlaku di blok try Menjalankan kod yang hanya perlu dijalankan jika try berhasil
finally Selalu dijalankan, tak kira pengecualian Operasi pembersihan (cth., menutup fail)
raise Mengangkat pengecualian secara manual Membuat kondisi ralat yang tersuai

Ingat, penanganan ralat yang baik adalah seperti memakai rakit penyelamat - ia mungkin kelihatan tidak perlu sampai anda benar-benar perlu itu! Latihan konsep ini, dan tidak lama lagi anda akan menulis kod Python yang kuat dan tahan penyakit seperti profesional.

Happy coding, dan jangan lupa untuk menangani pengecualian dengan sopan!

Credits: Image by storyset