Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cuba/Kecuali lwn. Jika/Lain: Bila Perlu Menggunakan Setiap untuk Pengendalian Ralat

Cuba/Kecuali lwn. Jika/Lain: Bila Perlu Menggunakan Setiap untuk Pengendalian Ralat

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-22 15:00:03883semak imbas

Try/Except vs. If/Else: When to Use Each for Error Handling

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:

  • Ia menghasilkan peningkatan prestasi dengan menghalang carian atau pengiraan yang tidak perlu.
  • Ia memudahkan kod dengan mengurangkan bilangan baris dan meningkatkan kebolehbacaan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn