Di Python, pengecualian dikendalikan dengan menggunakan blok try-except
. Struktur asas melibatkan menulis kod yang mungkin menimbulkan pengecualian dalam blok try
, dan mengendalikan pengecualian dalam blok except
. Berikut adalah contoh cara mengendalikan ZeroDivisionError
:
<code class="python">try: result = 10 / 0 except ZeroDivisionError: print("Error: Division by zero!")</code>
Anda boleh mengendalikan pelbagai pengecualian dengan memasukkan lebih banyak except
blok, masing -masing mengendalikan jenis pengecualian yang berbeza. Di samping itu, anda boleh menggunakan klausa generik except
untuk menangkap apa -apa pengecualian yang tidak ditangani secara eksplisit:
<code class="python">try: result = 10 / 0 except ZeroDivisionError: print("Error: Division by zero!") except ValueError: print("Error: Invalid value!") except: print("An unexpected error occurred!")</code>
Python juga membolehkan anda menaikkan pengecualian dengan jelas menggunakan kata kunci raise
, yang boleh berguna untuk pengendalian kesilapan tersuai dan untuk menaikkan semula pengecualian selepas melakukan beberapa tindakan di blok except
.
Menguruskan pengecualian dengan berkesan adalah penting untuk menulis kod python yang mantap. Berikut adalah beberapa amalan terbaik:
except
yang luas. Ini membantu dalam memahami dengan lebih baik jenis kesilapan yang berlaku dan mengendalikannya dengan sewajarnya.finally
untuk pembersihan : Gunakan blok finally
untuk memastikan sumber seperti pemegang fail, sambungan rangkaian, atau sambungan pangkalan data ditutup dengan betul, tanpa mengira sama ada pengecualian telah dibangkitkan.except
klausa : Bare except
klausa boleh menangkap pengecualian yang mungkin tidak anda jangkakan, termasuk pengecualian sistem seperti SystemExit
dan KeyboardInterrupt
. Lebih baik digunakan except Exception
kerana ia akan menangkap kebanyakan pengecualian tetapi bukan sistem yang tidak ada.with
pernyataan) : Apabila bekerja dengan sumber yang perlu dibersihkan, gunakan pengurus konteks yang secara automatik mengendalikan pengurusan sumber dan pembersihan.logging
untuk log pengecualian dengan berkesan. Blok try-except
dan try-finally
melayani tujuan yang berbeza dalam pengendalian pengecualian python:
Cuba-Eksepsi : Blok ini digunakan untuk menangkap dan mengendalikan pengecualian yang berlaku di dalam blok try
. Blok except
hanya melaksanakan jika pengecualian dibangkitkan di blok try
. Tujuan utama adalah untuk mengendalikan pengecualian dengan anggun dan meneruskan pelaksanaan program jika boleh.
<code class="python">try: result = 10 / 0 except ZeroDivisionError: print("Error: Division by zero!")</code>
Try-Finally : Blok ini digunakan untuk melaksanakan kod di blok finally
tanpa mengira sama ada pengecualian telah dibangkitkan di blok try
. Blok finally
biasanya digunakan untuk operasi pembersihan, memastikan sumber -sumbernya dikeluarkan dengan betul.
<code class="python">file = None try: file = open("example.txt", "r") content = file.read() finally: if file: file.close()</code>
Ringkasnya, try-except
memberi tumpuan kepada pengendalian pengecualian, sementara try-finally
memastikan bahawa kod tertentu (sering kod pembersihan) sentiasa dilaksanakan, walaupun pengecualian berlaku.
Pengecualian pembalakan secara berkesan adalah penting untuk menyahpepijat dan mengekalkan aplikasi. Berikut adalah beberapa strategi untuk log pengecualian di Python:
Gunakan Modul logging
: Modul logging
Python menyediakan rangka kerja yang fleksibel untuk memancarkan mesej log dari program Python. Lebih baik menggunakan modul ini untuk pengecualian pembalakan dan bukan hanya mencetaknya ke konsol.
<code class="python">import logging logging.basicConfig(filename='app.log', level=logging.ERROR) try: result = 10 / 0 except ZeroDivisionError as e: logging.error("An error occurred", exc_info=True)</code>
Sertakan konteks : Sentiasa sertakan konteks yang relevan dengan mesej log anda. Ini termasuk ID pengguna, ID transaksi, atau sebarang maklumat lain yang membantu dalam mengesan ralat kembali ke sumbernya.
<code class="python">logging.error("An error occurred while processing user %s", user_id, exc_info=True)</code>
exc_info=True
untuk log traceback penuh pengecualian. Ini memberikan maklumat terperinci mengenai di mana dan mengapa pengecualian berlaku.Format log tersuai : Konfigurasikan format log tersuai yang merangkumi cap waktu, tahap keparahan, dan butiran lain yang berkaitan. Ini membantu dalam menganalisis log dengan lebih berkesan.
<code class="python">logging.basicConfig( format='%(asctime)s - %(levelname)s - %(message)s', filename='app.log', level=logging.ERROR )</code>
Dengan mengikuti amalan ini, anda boleh memastikan bahawa pengecualian dilog masuk dengan berkesan, menjadikannya lebih mudah untuk mendiagnosis dan membetulkan isu -isu dalam aplikasi Python anda.
Atas ialah kandungan terperinci Bagaimana anda menangani pengecualian di Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!