Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana anda menangani pengecualian di Python?

Bagaimana anda menangani pengecualian di Python?

Johnathan Smith
Lepaskan: 2025-03-19 11:56:30
asal
404 orang telah melayarinya

Bagaimana anda menangani pengecualian di Python?

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

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

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 .

Apakah beberapa amalan terbaik untuk menguruskan pengecualian dalam kod python?

Menguruskan pengecualian dengan berkesan adalah penting untuk menulis kod python yang mantap. Berikut adalah beberapa amalan terbaik:

  1. Jadilah khusus dalam pengendalian pengecualian : menangkap pengecualian khusus dan bukannya menggunakan except yang luas. Ini membantu dalam memahami dengan lebih baik jenis kesilapan yang berlaku dan mengendalikannya dengan sewajarnya.
  2. Gunakan 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.
  3. Elakkan kosong 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.
  4. Gunakan pengurus konteks ( with pernyataan) : Apabila bekerja dengan sumber yang perlu dibersihkan, gunakan pengurus konteks yang secara automatik mengendalikan pengurusan sumber dan pembersihan.
  5. Pengecualian Pembalakan : Sentiasa log pengecualian. Ini membantu dalam menyahpepijat dan memantau aplikasi. Gunakan modul logging untuk log pengecualian dengan berkesan.
  6. Pengecualian tersuai : Tentukan pengecualian tersuai untuk aplikasi anda untuk memberikan lebih banyak konteks dan pengendalian ralat yang lebih baik untuk senario tertentu.
  7. Jangan gunakan pengecualian untuk aliran kawalan : Pengecualian tidak boleh digunakan sebagai mekanisme aliran kawalan biasa. Mereka harus dikhaskan untuk situasi yang luar biasa.

Bolehkah anda menerangkan perbezaan antara percubaan cuba dan cuba-finally dalam python?

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

Ringkasnya, try-except memberi tumpuan kepada pengendalian pengecualian, sementara try-finally memastikan bahawa kod tertentu (sering kod pembersihan) sentiasa dilaksanakan, walaupun pengecualian berlaku.

Bagaimanakah anda dapat mencatatkan pengecualian dengan berkesan dalam python untuk debugging yang lebih baik?

Pengecualian pembalakan secara berkesan adalah penting untuk menyahpepijat dan mengekalkan aplikasi. Berikut adalah beberapa strategi untuk log pengecualian di Python:

  1. 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>
    Salin selepas log masuk
  2. 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>
    Salin selepas log masuk
  3. Butiran Pengecualian Log : Gunakan parameter exc_info=True untuk log traceback penuh pengecualian. Ini memberikan maklumat terperinci mengenai di mana dan mengapa pengecualian berlaku.
  4. 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>
    Salin selepas log masuk
  5. Pembalakan berpusat : Pertimbangkan menggunakan penyelesaian pembalakan berpusat seperti ELK (Elasticsearch, Logstash, Kibana) atau perkhidmatan berasaskan awan seperti AWS CloudWatch untuk menguruskan log dari pelbagai sumber.

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan