Mekanisme pengendalian pengecualian Python direka untuk mengendalikan kesilapan atau peristiwa yang tidak dijangka dengan anggun semasa pelaksanaan program. Pembinaan utama untuk pengendalian pengecualian di Python adalah blok try-except
. Inilah cara ia berfungsi:
try
.try
, kawalan segera dipindahkan ke blok except
yang mengendalikan pengecualian. Python membolehkan pelbagai except
blok untuk mengendalikan pelbagai jenis pengecualian.else
boleh digunakan untuk melaksanakan kod apabila tiada pengecualian dibangkitkan di blok try
.finally
dilaksanakan tanpa mengira sama ada pengecualian berlaku atau tidak, sering digunakan untuk tindakan pembersihan.Contoh:
<code class="python">try: result = 10 / 0 except ZeroDivisionError: print("Cannot divide by zero!") else: print("Division successful") finally: print("Execution completed")</code>
Untuk membuat pengecualian tersuai di Python, anda boleh menentukan kelas baru yang mewarisi dari kelas Exception
terbina dalam atau mana-mana subkelasnya. Inilah cara melakukannya:
Exception
atau kelas pengecualian yang lebih spesifik.Contoh membuat pengecualian tersuai:
<code class="python">class CustomError(Exception): """A custom exception class""" def __init__(self, message, error_code): self.message = message self.error_code = error_code super().__init__(f"{self.message} (Error Code: {self.error_code})") try: raise CustomError("Something went wrong", 500) except CustomError as e: print(e)</code>
Menggunakan pengecualian tersuai di Python menawarkan beberapa faedah:
Pengendalian pengecualian dapat meningkatkan keteguhan program Python dalam beberapa cara:
finally
memastikan bahawa sumber seperti pemegang fail atau sambungan rangkaian ditutup dengan betul, walaupun ralat berlaku, yang menghalang kebocoran sumber.Python termasuk pelbagai pengecualian terbina dalam yang digunakan untuk mengendalikan senario ralat biasa. Berikut adalah beberapa yang paling biasa:
SyntaxError: Dibesarkan apabila parser menemui ralat sintaks. Pengecualian ini membantu dalam mengenal pasti isu sintaks dalam kod.
<code class="python">try: eval("print 'Hello, World!'") # Syntax error in Python 3 except SyntaxError as e: print(e)</code>
TypeError: Dibesarkan apabila operasi atau fungsi digunakan pada objek jenis yang tidak sesuai.
<code class="python">try: result = "a string" 123 except TypeError as e: print(e)</code>
ValueError: Dibesarkan apabila fungsi menerima hujah jenis yang betul tetapi nilai yang tidak sesuai.
<code class="python">try: int("not a number") except ValueError as e: print(e)</code>
IndexError: Dibesarkan apabila subskrip urutan berada di luar jangkauan.
<code class="python">try: my_list = [1, 2, 3] print(my_list[10]) except IndexError as e: print(e)</code>
KeyError: Dibesarkan apabila kunci kamus tidak dijumpai.
<code class="python">try: my_dict = {"a": 1, "b": 2} print(my_dict["c"]) except KeyError as e: print(e)</code>
ZerodivisionError: Dibesarkan apabila hujah kedua pembahagian atau operasi modulo adalah sifar.
<code class="python">try: result = 10 / 0 except ZeroDivisionError as e: print(e)</code>
Pengecualian terbina dalam ini membantu pemaju mengendalikan kesilapan biasa dengan cekap dan menjadikan kod mereka lebih mantap dan tahan ralat.
Atas ialah kandungan terperinci Terangkan bagaimana pengendalian pengecualian Python berfungsi. Bagaimana anda boleh membuat pengecualian tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!