Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-10-22 15:00:03
asal
952 orang telah melayarinya

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>
Salin selepas log masuk

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'
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan