cari
Rumahpembangunan bahagian belakangTutorial PythonPengendalian Ralat dalam Python: Amalan Terbaik. Terokai cara mengendalikan pengecualian dengan berkesan

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.

name = “Austin”;
print(name)

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.

name = “Austin”;
print(name)

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

active = True
if (active):
print(“The user is active”)

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.

if (active):
    print(“The user is active”)

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

def str_num(num_string):
    return(int(string))

TypeError

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

print(str_num(“123”)) #works perfectly
print(str_num(“abc”)) #raises a ValueError

Ini akan mencetuskan TypeError.

IndexError

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

def addition(num1, num2):
    return num1 + num2
# calling the function
addition(5, A)

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.

my_list = [“dog”, “cat”]
my_list[2]

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.

name = “Austin”;
print(name)

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.

active = True
if (active):
print(“The user is active”)

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.

if (active):
    print(“The user is active”)

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;

def str_num(num_string):
    return(int(string))

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.

print(str_num(“123”)) #works perfectly
print(str_num(“abc”)) #raises a ValueError

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!

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
Python dan Masa: Memanfaatkan masa belajar andaPython dan Masa: Memanfaatkan masa belajar andaApr 14, 2025 am 12:02 AM

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Python: Permainan, GUI, dan banyak lagiPython: Permainan, GUI, dan banyak lagiApr 13, 2025 am 12:14 AM

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

Python vs C: Aplikasi dan kes penggunaan dibandingkanPython vs C: Aplikasi dan kes penggunaan dibandingkanApr 12, 2025 am 12:01 AM

Python sesuai untuk sains data, pembangunan web dan tugas automasi, manakala C sesuai untuk pengaturcaraan sistem, pembangunan permainan dan sistem tertanam. Python terkenal dengan kesederhanaan dan ekosistem yang kuat, manakala C dikenali dengan keupayaan kawalan dan keupayaan kawalan yang mendasari.

Rancangan Python 2 jam: Pendekatan yang realistikRancangan Python 2 jam: Pendekatan yang realistikApr 11, 2025 am 12:04 AM

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Python: meneroka aplikasi utamanyaPython: meneroka aplikasi utamanyaApr 10, 2025 am 09:41 AM

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Berapa banyak python yang boleh anda pelajari dalam 2 jam?Berapa banyak python yang boleh anda pelajari dalam 2 jam?Apr 09, 2025 pm 04:33 PM

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Apr 02, 2025 am 07:18 AM

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Apr 02, 2025 am 07:15 AM

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual