Artikel ini meneroka pelbagai teknik yang digunakan untuk mengendalikan pengecualian dalam Python, termasuk blok cuba kecuali, pengecualian tersuai dan ciri lanjutan seperti rantaian pengecualian dan pengayaan.
Python menyediakan rangka kerja pengendalian pengecualian yang teguh yang bukan sahaja membenarkan pengaturcara melaksanakan kod yang menghalang ranap tetapi juga menawarkan maklum balas dan mengekalkan kestabilan aplikasi. Selain itu, ia membolehkan pembangun mengurus ralat dengan anggun menggunakan binaan seperti blok cuba kecuali, pengecualian tersuai dan banyak lagi.
- Blok Try-Except
Dalam blok cuba-kecuali, kod yang mungkin menimbulkan pengecualian diletakkan dalam blok cuba dan blok-kecuali menentukan tindakan yang perlu diambil jika pengecualian berlaku (Python Software Foundation, n.d.).
Contohnya:
try: result = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.")
Untuk menangkap berbilang pengecualian dalam satu blok cuba kecuali, kita boleh menggunakan blok cuba dengan beberapa blok kecuali untuk menjana respons khusus bagi setiap jenis pengecualian. Atau, kita boleh menggunakan tuple untuk menangkap berbilang pengecualian dengan ungkapan pengecualian tunggal.
Contohnya:
# One try block and several except blocks try: result = 1 / 'a' except ZeroDivisionError: print("Cannot divide by zero.") except TypeError: print("Type error occurred.") # One try block and one except tuple block try: # some operation result = 1 / 'a' except (ZeroDivisionError, TypeError) as e: print(f"Error occurred: {e}")
- Fasal Lain
Klausa else, diletakkan selepas blok cuba kecuali dan dijalankan jika blok cuba tidak menimbulkan pengecualian.
Contohnya:
try: result = 1 / 2 except ZeroDivisionError: print(“Cannot divide by zero.”) else: print(“Division successful.”)
- Fasal Akhirnya
Klausa akhirnya sentiasa diletakkan selepas blok cuba atau mana-mana blok kecuali. Ia mengandungi kod yang berjalan tidak kira apa pun, biasanya untuk membersihkan sumber seperti fail atau sambungan rangkaian, walaupun pengecualian telah dibangkitkan.
Contohnya:
try: result = 1 / ‘a’ except ZeroDivisionError: print(“Cannot divide by zero.”) except TypeError: print(“Type error occurred.”) else: print(“Division successful.”) finally: print(“Goodbye, world!”)
Meningkatkan pengecualian: klausa kenaikan menimbulkan pengecualian dengan memaksa pengecualian berlaku, biasanya untuk menunjukkan bahawa syarat tertentu belum dipenuhi.
Contohnya:
if ‘a’ > 5: raise ValueError(“A must not exceed 5”)
- Rantaian Pengecualian
Anda boleh merantai pengecualian dengan kenaikan klausa. Ini berguna untuk menambahkan konteks pada ralat asal.
Sebagai Contoh
try: open(‘myfile.txt’) except FileNotFoundError as e: raise RuntimeError(“Failed to open file”) from e
- Pengecualian tersuai
Anda boleh menentukan kelas pengecualian anda sendiri dengan mewarisi daripada kelas Pengecualian atau mana-mana kelas pengecualian terbina dalam yang lain (Mitchell, 2022).
Contohnya:
class My_custom_ (Exception): pass try: raise MyCustomError(“An error occurred”) except MyCustomError as e: print(e)
- Memperkayakan pengecualian
anda boleh menambah maklumat atau konteks pada pengecualian dengan menggunakan kaedah add_note() untuk 'menambah' mesej atau nota tersuai pada objek pengecualian aka e.
Contohnya:
def divide_numbers(a, b): try: result = a / b except ZeroDivisionError as e: e.add_note(“Cannot divide by zero”) e.add_note(“Please provide a non-zero divisor”) raise try: num1 = 10 num2 = 0 divide_numbers(num1, num2) except ZeroDivisionError as e: print(“An error occurred:”) print(str(e))
Mengendalikan pengecualian adalah penting atas beberapa sebab:
Contoh pengendalian ralat program yang mudah:
try: result = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.")
# One try block and several except blocks try: result = 1 / 'a' except ZeroDivisionError: print("Cannot divide by zero.") except TypeError: print("Type error occurred.") # One try block and one except tuple block try: # some operation result = 1 / 'a' except (ZeroDivisionError, TypeError) as e: print(f"Error occurred: {e}")
Untuk meringkaskan, Python menyediakan rangka kerja pengendalian pengecualian komprehensif yang membolehkan program mengendalikan situasi yang tidak dijangka tanpa gagal secara tiba-tiba. Dengan menggunakan binaan seperti blok cuba kecuali, pengecualian tersuai dan ciri lanjutan seperti rantaian pengecualian dan pengayaan, pembangun boleh memastikan program mereka berdaya tahan, mesra pengguna dan mampu mengendalikan senario yang tidak dijangka dengan anggun.
Rujukan:
Mitchell R (2022, 13 Jun). Pengecualian tersuai. _Python Essential Training _[VIDEO]. Pembelajaran LinkedIn. https://www.linkedin.com/learning/python-essential-training-14898805/custom-exceptions?autoSkip=true&resume=false&u=2245842
Yayasan Perisian Python. (n.d.). 8. Ralat dan Pengecualian. Ular sawa. python.org.
Pada asalnya diterbitkan di Exception Handling in Python - Medium pada 21 Ogos 2024.
Atas ialah kandungan terperinci Pengendalian Pengecualian dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!