Pengendalian Pengecualian: Try/Except vs. If/Else
Apabila berhadapan dengan kemungkinan ralat atau pengecualian dalam kod, pengaturcara sering teragak-agak antara menggunakan cuba/kecuali blok atau pernyataan if/else. Walaupun keputusan ini kelihatan remeh, ia boleh memberi kesan ketara kepada reka bentuk, prestasi dan kebolehbacaan kod.
Cuba/Kecuali lwn. Jika/Lain: Pendekatan Pilihan
Umum konsensus, disokong oleh PEP 20, adalah untuk mengutamakan cuba/kecuali daripada jika/lain apabila:
Pengoptimuman Kelajuan
Pertimbangkan contoh mengakses elemen dalam senarai:
<code class="python">try: x = my_list[index] except IndexError: x = 'NO_ABC'</code>
Di sini, cuba/kecuali adalah berfaedah apabila indeks mungkin ditemui dalam senarai, meminimumkan kejadian IndexError. Sebaliknya, pendekatan if/else akan memerlukan carian tambahan:
<code class="python">if index < len(my_list): x = my_list[index] else: x = 'NO_ABC'
Pengendalian Pengecualian dan Kebolehbacaan
Python menggalakkan penggunaan pengecualian sebagai sebahagian daripada EAFPnya (Lebih mudah meminta ampun daripada izin) falsafah. Dengan menangkap ralat dengan anggun dalam cuba/kecuali blok, pengaturcara memastikan bahawa pengecualian tidak lulus secara senyap. Selain itu, cuba/kecuali membenarkan kod yang lebih ringkas dan elegan:
<code class="python">Worse (LBYL: 'look before you leap'): if not isinstance(s, str) or not s.isdigit(): return None elif len(s) > 10: #too many digits for int conversion return None else: return int(s) Better (EAFP: Easier to ask for forgiveness than permission): try: return int(s) except (TypeError, ValueError, OverflowError): #int conversion failed return None</code>
Atas ialah kandungan terperinci Cuba/Kecuali lwn. Jika/Lain: Bila Perlu Menggunakan Setiap untuk Pengendalian Ralat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!