Rumah > pembangunan bahagian belakang > Tutorial Python > Pengendalian Ralat dalam Python: Amalan Terbaik. Terokai cara mengendalikan pengecualian dengan berkesan

Pengendalian Ralat dalam Python: Amalan Terbaik. Terokai cara mengendalikan pengecualian dengan berkesan

Patricia Arquette
Lepaskan: 2025-01-12 22:09:43
asal
788 orang telah melayarinya

Error Handling in Python: Best Practices. Explore how to handle exceptions effectively

Ringkasan:

Ralat program tidak dapat dipulihkan; apabila program menghadapi ralat, ia akan keluar atau ranap serta-merta.

Pengaturcara yang baik memastikan bahawa kod atau perisian mereka boleh mengendalikan ralat/pengecualian yang mungkin timbul semasa penggunaan perisian tanpa ranap atau menghasilkan hasil yang tidak diingini. Bayangkan menulis perisian untuk institusi kewangan yang hanya menerima input angka, jika pengguna memasukkan huruf dan bukannya nombor untuk operasi aritmetik, ini biasanya akan menimbulkan ralat dan perisian akan ranap kerana pengguna tunggal, jika tiada sebarang mekanisme dalam tempat untuk mengendalikan kata-kata ralat. Ini sememangnya bukan perkara yang baik - ia tidak baik untuk perniagaan, boleh menyebabkan pelanggan kecewa, dan seseorang boleh kehilangan pekerjaan kerana ketidakcekapan.

Dalam artikel ini, kami akan mempelajari cara terbaik untuk menangani ralat dalam kod anda yang mungkin timbul akibat interaksi pengguna. nantikan.

Prasyarat

Artikel ini sesuai untuk:

  • Pembangun perisian Python ingin mengetahui cara mengendalikan pengecualian dalam kod mereka.
  • Orang yang sudah biasa dengan Python dan ingin mempelajari konsep pengendalian ralat dalam Python.
  • Para profesional sedia ada yang ingin meningkatkan pengetahuan mereka tentang pengendalian ralat Python.

Matlamat

Selepas membaca artikel ini, pembaca seharusnya dapat:

  • Memahami dengan jelas konsep pengendalian ralat dalam Python dan kepentingannya.
  • Ketahui tentang kelas pengecualian tersuai dan cara melaksanakannya.
  • Fahami perbezaan utama antara ralat dan pengecualian dalam Python.

Penjelasan tentang ralat dan pengecualian

Ralat dan Pengecualian sering digunakan secara bergantian, tetapi secara teknikal ia bermaksud perkara yang berbeza. Dalam Python, Ralat dan Pengecualian ialah kedua-dua subkelas BaseException, Ini selanjutnya menunjukkan bahawa walaupun mereka berbeza, mereka mempunyai persamaan.

Ralat

Ralat tidak dapat dipulihkan; apabila program kami menghadapi ralat, ia akan keluar atau ranap serta-merta. Walaupun anda mungkin menjangkakan ralat, tidak ada cara untuk mengendalikannya secara pemrograman. Beberapa ralat disenaraikan di bawah:

SyntaxError

Ini adalah salah satu jenis ralat yang paling biasa dihadapi oleh pengaturcara, ia berlaku apabila kod tidak mengikut sintaks Python yang betul dan boleh dikesan semasa menghuraikan. Ini adalah soalan yang mudah timbul untuk pelajar atau orang yang beralih kepada Python daripada bahasa pengaturcaraan lain.

<code class="language-python">name = “Austin”;
print(name)</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini menghasilkan SyntaxError kerana dalam pernyataan Python tidak berakhir dengan koma bertitik.

IndentationError

Ralat ini berlaku apabila kod Python diinden dengan tidak betul dan dikesan semasa menghuraikan kod. Lekukan dalam Python sangat penting. Ia adalah satu-satunya cara dalam Python anda boleh menentukan blok kod, tidak seperti kebanyakan bahasa yang menggunakan pendakap kerinting.

<code class="language-python">name = “Austin”;
print(name)</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kod ini akan menyebabkan ralat disebabkan lekukan yang tidak betul. Ia sepatutnya:

<code class="language-python">active = True
if (active):
print(“The user is active”)</code>
Salin selepas log masuk
Salin selepas log masuk

Pengecualian

Pengecualian dalam Python berlaku pada masa jalan. Tidak seperti ralat, ia boleh dikendalikan dengan betul atau ditangkap secara pengaturcaraan supaya program kami boleh terus berjalan tanpa ranap. Dalam erti kata lain, ia boleh dipulihkan. Berikut ialah beberapa pengecualian biasa dalam Python:

Pengecualian terbina dalam

Jenis pengecualian ini adalah sebahagian daripada bahasa pengaturcaraan Python. Sebahagian daripada mereka disenaraikan di bawah:

ValueError

Ralat ini berlaku apabila parameter yang tidak sah dihantar ke fungsi, walaupun jenisnya mungkin betul.

<code class="language-python">if (active):
    print(“The user is active”)</code>
Salin selepas log masuk
Salin selepas log masuk

Daripada coretan kod di atas, jika kita menghantar rentetan angka ke fungsi, ia akan berjaya menukar kepada nombor, jika tidak, ia akan menghasilkan ValueError.

<code class="language-python">def str_num(num_string):
    return(int(string))</code>
Salin selepas log masuk
Salin selepas log masuk

TypeError

Ralat ini timbul apabila parameter jenis yang tidak sesuai dihantar ke fungsi.

<code class="language-python">print(str_num(“123”)) #works perfectly
print(str_num(“abc”)) #raises a ValueError</code>
Salin selepas log masuk
Salin selepas log masuk

Ini akan mencetuskan TypeError.

IndexError

Ralat ini berlaku apabila anda cuba mengakses nilai dalam senarai menggunakan indeks yang salah.

<code class="language-python">def addition(num1, num2):
    return num1 + num2
# calling the function
addition(5, A)</code>
Salin selepas log masuk

Ini mengakibatkan IndexError kerana my_list[2] tidak boleh diakses.

KeyError

Ralat ini timbul apabila percubaan dibuat untuk mengakses nilai dalam kamus menggunakan kunci yang salah atau tidak wujud.

<code class="language-python">my_list = [“dog”, “cat”]
my_list[2]</code>
Salin selepas log masuk

Ini akan mencetuskan KeyError. Anda boleh menemui pengecualian terbina dalam lain di sini.

Pengecualian tersuai

Pengecualian tersuai ditakrifkan oleh pengaturcara. Di sini, Python membolehkan pengaturcara mentakrifkan syarat secara manual yang perlu diperiksa oleh program semasa pelaksanaan dan membuang pengecualian jika ditemui. Anda boleh mencapai ini dengan mencipta kelas yang mewarisi daripada kelas Exception.

Mengendalikan pengecualian

Pengecualian pengendalian memastikan aplikasi perisian kami mempunyai prestasi yang boleh diramal apabila menghadapi ralat tertentu yang timbul semasa kitaran hayat aplikasi. Dalam bahagian ini, anda akan belajar bagaimana untuk melaksanakan ini dalam pengaturcaraan.

Gunakan try-except pernyataan

Pernyataan

try-except menyediakan cara selamat untuk mengendalikan kod yang mungkin menimbulkan ralat atau pengecualian. Penyataan try membalut kod bermasalah atau klausa try ini adalah bahagian kod yang kemungkinan besar akan menyebabkan keseluruhan program menjadi salah apabila menerima input daripada pengguna, membaca daripada fail, ke sebutkan beberapa contoh.

Pernyataan

except menandakan permulaan klausa except ini ialah selebihnya kod yang dibalut dalam blok except. Klausa except mengendalikan pengecualian yang dibangkitkan dalam blok try.

Izinkan saya membimbing anda melalui aliran kerja pelaksanaan. Program Python anda biasanya akan dilaksanakan sehingga ia mencapai blok try yang mengandungi kod "bermasalah", dan jika tiada ralat yang mungkin berlaku semasa melaksanakan kod dalam blok try pada masa itu, ia akan melangkau blok except dan teruskan Laksanakan asas kod yang lain. Walau bagaimanapun, jika ralat ditemui semasa melaksanakan kod dalam blok try, sejurus selepas objek pengecualian dicipta, kawalan melompat ke blok except di mana ia harus dikendalikan oleh kelas pengecualian yang sepadan.

<code class="language-python">name = “Austin”;
print(name)</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Daripada coretan kod di atas, jika nilai bukan angka dihantar ke atur cara, objek pengecualian dibuat dan ValueError dilemparkan. Kawalan segera melompat ke blok except, di mana ia mengimbas kelas pengecualian yang sesuai. Di sini, kelas ValueError sudah memadai. Ralat telah dikendalikan dengan betul. Walau bagaimanapun, jika kelas yang betul tidak ditemui, kawalan beralih ke blok try luar (jika ada), dan jika pengecualian masih tidak dikendalikan dengan betul, program ranap.

Gunakan satu pernyataan except untuk mengendalikan berbilang kelas pengecualian

Boleh menyemak berbilang kelas pengecualian dan mengendalikan pengecualian tertentu. Pendekatan ini lebih disukai jika anda tidak pasti yang mana antara beberapa pengecualian yang menghasilkan pelaksanaan kod. Lihat coretan kod di bawah.

<code class="language-python">active = True
if (active):
print(“The user is active”)</code>
Salin selepas log masuk
Salin selepas log masuk

Kelas pengecualian kad liar

Kelas

Exception ialah subkelas langsung BaseException. Kelas Exception ialah kelas asas untuk semua pengecualian bukan maut.

Dalam kebanyakan kes, kelas Exception mencukupi untuk mengendalikan kebanyakan pengecualian yang dilemparkan semasa pelaksanaan kod.

<code class="language-python">if (active):
    print(“The user is active”)</code>
Salin selepas log masuk
Salin selepas log masuk

Walaupun kelas Exception boleh mengendalikan pengecualian yang tidak membawa maut, sebaiknya gunakannya dengan berhati-hati. Gunakan kelas Exception yang betul kerana ia lebih baik untuk nyahpepijat dan meningkatkan kebolehbacaan kod.

Gunakan pernyataan finally

Bahagian kod yang dibalut dalam blok finally akan dilaksanakan tanpa mengira sama ada pengecualian berlaku. Ini menjadikannya sesuai untuk mengendalikan tugas pembersihan;

<code class="language-python">def str_num(num_string):
    return(int(string))</code>
Salin selepas log masuk
Salin selepas log masuk

Buat kelas pengecualian tersuai

Mencipta pengecualian tersuai membolehkan pengaturcara mengemukakan pengecualian khusus untuk program perisian. Ini mungkin termasuk keadaan khas atau kes tepi yang mungkin memudaratkan kefungsian program perisian tertentu. Kelas pengecualian tersuai yang ditakrifkan mesti diwarisi daripada kelas Exception.

<code class="language-python">print(str_num(“123”)) #works perfectly
print(str_num(“abc”)) #raises a ValueError</code>
Salin selepas log masuk
Salin selepas log masuk

Coretan kod di atas menunjukkan cara membuat dan menggunakan pengecualian tersuai. Bergantung pada kes penggunaan, ia boleh digunakan dengan cara yang lebih kompleks.

Mengapa pengendalian ralat/pengecualian penting

"Jangan percaya pengguna" ialah pepatah biasa dalam kalangan pembangun perisian, yang mengulangi bahawa anda tidak pasti sepenuhnya bagaimana pengguna anda akan berinteraksi dengan aplikasi perisian anda tentang jenis input yang mereka masukkan dan perkara yang anda masukkan , pengaturcara, sedang lakukan semasa menulis aplikasi anda Terdapat beberapa kes sudut lain yang mungkin tidak difikirkan. Beberapa sebab penting untuk pengendalian ralat/pengecualian yang betul dijelaskan di bawah:

  1. Cegah ranap sistem Tanpa pengendalian pengecualian, ralat yang tidak dikendalikan boleh menyebabkan program ranap secara tiba-tiba. Ini boleh mengakibatkan kehilangan data atau pengalaman pengguna yang buruk. Contoh: Tiada pengecualian pengendalian:
cetak(10 / 0) # ZeroDivisionError: pembahagian dengan sifar

Gunakan pengendalian pengecualian:

cuba: cetak(10/0) kecuali ZeroDivisionError: print("Tidak boleh bahagi dengan sifar!")

  1. Tingkatkan pengalaman pengguna Pengecualian yang dikendalikan dengan betul menjadikan aplikasi lebih mudah digunakan dengan menyediakan mesej ralat yang bermakna dan bukannya ralat sistem samar. Contoh:
cuba: umur = int(input("Masukkan umur anda:")) kecuali ValueError: print("Input tidak sah! Sila masukkan nombor.")
  1. Kekalkan kestabilan aplikasi Ia membolehkan aplikasi terus berjalan walaupun selepas menghadapi ralat, memastikan kestabilan. Contoh:
def bahagi(a, b): cuba: kembalikan a/b kecuali ZeroDivisionError: kembali "Pembahagian dengan sifar tidak dibenarkan!"

cetak(bahagi(10, 2)) # Output: 5.0 print(bahagi(10, 0)) # Output: Pembahagian dengan sifar tidak dibenarkan!

  1. Mengendalikan situasi yang melampau Pengendalian pengecualian membolehkan anda mengambil kira situasi yang tidak dapat diramalkan seperti kegagalan rangkaian, kehilangan fail atau input pengguna yang tidak sah. Contoh:
cuba: dengan open("data.txt", "r") sebagai fail: kandungan = file.read() kecuali FileNotFoundError: print("Fail tidak dapat ditemui.")
  1. Galakkan menulis kod ringkas
    Pengendalian pengecualian menjadikan kod anda lebih mudah dibaca, nyahpepijat dan diselenggara dengan mengasingkan logik biasa daripada logik pengendalian ralat.

  2. Memudahkan penyahpepijatan
    Dengan mesej ralat terperinci dan log pengecualian, pembangun boleh mengenal pasti dan membetulkan isu dalam kod mereka dengan cepat.
    Contoh:

import pembalakan

cuba: keputusan=10/0 kecuali Pengecualian sebagai e: logging.error("Ralat berlaku", exc_info=True)

  1. Kritis untuk sistem kritikal Dalam sistem yang kebolehpercayaan adalah kritikal (cth. perbankan, penjagaan kesihatan), pengendalian pengecualian adalah perlu untuk memastikan ralat diurus dengan selamat tanpa menyebabkan kerosakan atau kehilangan data.

Kesimpulan

Dalam istilah pengaturcaraan, ralat dan pengecualian paling kerap digunakan secara bergantian. Perbezaan utama antara ralat dan pengecualian dalam Python ialah cara ia mempengaruhi program perisian kami. Ralat seperti ralat sintaks dan ralat lekukan boleh ranap program apabila jurubahasa menghuraikannya. Sebaliknya, pengecualian boleh ranap program pada masa jalan jika ia tidak dikendalikan dengan betul. Pengecualian tersuai memanjangkan keupayaan pengendalian ralat dengan membolehkan pengaturcara mentakrifkan kelas pengecualian khusus untuk aplikasi perisian tertentu.

Pengendalian ralat juga sangat penting untuk nyahpepijat. Ia membolehkan kami melihat mengapa ralat berlaku dalam aplikasi, menyediakan penyelenggara perisian dengan maklumat yang mencukupi untuk menyelesaikan masalah. Sentiasa pastikan bahawa pengendalian pengecualian diperkenalkan dengan sewajarnya dalam kod anda untuk memastikan keteguhan aplikasi perisian anda.

Terima kasih kerana membaca.

Atas ialah kandungan terperinci Pengendalian Ralat dalam Python: Amalan Terbaik. Terokai cara mengendalikan pengecualian dengan berkesan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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