Rumah >pembangunan bahagian belakang >Tutorial Python >Penjelasan terperinci tentang pengecualian dalam Python

Penjelasan terperinci tentang pengecualian dalam Python

王林
王林asal
2023-06-10 17:43:452441semak imbas

Python ialah bahasa pengaturcaraan yang sangat baik kerana kemudahan membaca dan memahami serta perpustakaan pakej yang kaya, Python telah digunakan secara meluas dalam pelbagai bidang. Walau bagaimanapun, dalam proses menulis kod Python, beberapa ralat pasti akan berlaku, seperti ralat nama pembolehubah, ralat sintaks, dan lain-lain. Pada masa ini, Python boleh menggunakan pengendalian pengecualian untuk mengelakkan atur cara berhenti tanpa diduga, memudahkan proses penyahpepijatan program, dan meningkatkan kecekapan pengaturcaraan. Artikel ini akan memperkenalkan pengecualian dalam Python secara terperinci, termasuk jenis pengecualian, kaedah pengendalian pengecualian, jejak tindanan pengecualian, dsb.

1. Jenis pengecualian

  1. SyntaxError: syntax error

Apabila penterjemah Python menemui ralat sintaks dalam atur cara, ia akan membuang pengecualian SyntaxError . Contohnya:

print 'hello world'

Dalam versi Python 3.x, cetakan hendaklah ditulis dalam kurungan Cara yang betul untuk menulisnya ialah:

print('hello world')

Jika ia masih ditulis sebagai cetakan 'hello world', pengecualian SyntaxError akan dilemparkan semasa menjalankan program.

    NameError: Ralat nama pembolehubah
Apabila Python menemui pembolehubah yang tidak ditentukan, ia membuang pengecualian NameError. Contohnya:

a = 1
print(b)

Oleh kerana pembolehubah b tidak ditakrifkan, pengecualian NameError akan dilemparkan.

    TypeError: Ralat taip
Pengecualian TypeError dilemparkan apabila percubaan dibuat untuk menggunakan jenis operasi yang tidak disokong. Contohnya:

a = 'hello'
b = 5
print(a + b)

Memandangkan rentetan dan integer tidak boleh ditambah secara langsung, pengecualian TypeError akan dilemparkan.

    ZeroDivisionError: Ralat pembahagian dengan sifar
Pengecualian ZeroDivisionError dilemparkan apabila cuba membahagi dengan sifar. Contohnya:

a = 5 / 0

Memandangkan membahagi dengan sifar ialah operasi yang menyalahi undang-undang, pengecualian ZeroDivisionError akan dilemparkan.

    IndexError: Ralat indeks
Pengecualian IndexError dilemparkan apabila cuba mengakses elemen yang tidak wujud dalam senarai atau tupel. Contohnya:

a = [1, 2, 3]
print(a[3])

Memandangkan terdapat hanya tiga elemen dalam a, mengakses indeks 3 akan membuang pengecualian IndexError.

    KeyError: Ralat kunci kamus
Pengecualian KeyError dilemparkan apabila cuba mengakses kunci yang tidak wujud dalam kamus. Contohnya:

a = {'name': 'Tom', 'age': 20}
print(a['gender'])

Memandangkan kunci 'jantina' tidak wujud dalam a, pengecualian KeyError akan dilemparkan.

    ValueError: Ralat nilai
Apabila jenis parameter fungsi betul tetapi nilai parameter salah, pengecualian ValueError dilemparkan. Contohnya:

a = int('abc')

Memandangkan 'abc' tidak boleh ditukar kepada jenis integer, pengecualian ValueError akan dilemparkan.

2. Kaedah pengendalian pengecualian

Dalam Python, anda boleh menggunakan pernyataan cuba-kecuali untuk mengendalikan pengecualian. Blok cuba mengandungi blok kod yang mungkin salah, dan blok kecuali mengandungi kod pengendalian apabila pengecualian berlaku.

Apabila mengendalikan berbilang jenis pengecualian, anda boleh menggunakan berbilang penyataan kecuali. Contohnya:

try:
    a = 1 / 0
except ZeroDivisionError:
    print('除数为零')
except TypeError:
    print('类型错误')

Apabila pengecualian ZeroDivisionError berlaku apabila melaksanakan kod dalam blok cuba, atur cara akan melaksanakan kod dalam blok pertama kecuali untuk mencetak "Pembahagi adalah sifar". kecuali yang kedua akan dilaksanakan Kod dalam blok mencetak "TypeError".

Jika anda ingin menangkap semua jenis pengecualian, anda boleh menggunakan format asas pernyataan kecuali:

try:
    # 可能会出错的代码
except:
    # 异常处理代码

Pada masa ini, kod dalam blok kecuali akan menangkap semua jenis pengecualian .

Selain pernyataan cuba-kecuali, Python juga menyediakan klausa akhirnya untuk kod yang akan dilaksanakan tanpa mengira sama ada pengecualian berlaku. Contohnya:

try:
    # 可能会出错的代码
except:
    # 异常处理代码
finally:
    # 无论如何都会执行的代码

3. Jejak tindanan pengecualian

Apabila menulis atur cara Python, jika pengecualian berlaku, atur cara itu bukan sahaja akan menggesa jenis pengecualian dan maklumat pengecualian, tetapi juga memaparkan pengecualian maklumat surih tindanan, iaitu Timbunan panggilan kod apabila pengecualian berlaku.

Maklumat surih tindanan pengecualian sangat berguna dan boleh membantu kami mencari lokasi kod tempat pengecualian berlaku, menjadikannya lebih mudah untuk nyahpepijat dan membetulkan masalah.

Berikut ialah contoh maklumat surih tindanan pengecualian:

Traceback (most recent call last):
  File "exceptions.py", line 11, in <module>
    c = a / b
ZeroDivisionError: division by zero

Antaranya, Traceback memaparkan keseluruhan maklumat surih tindanan pengecualian, dan baris terakhir memaparkan jenis pengecualian dan maklumat pengecualian.

Fail "exceptions.py", baris 11, dalam 4225fa317875f3e92281a7b1a5733569 menunjukkan nama fail dan nombor baris kod tempat pengecualian berlaku.

Untuk program atau program yang berjalan lama dalam persekitaran pengeluaran, anda boleh menulis maklumat surih tindanan pengecualian ke dalam fail log untuk memudahkan analisis pasca acara.

4. Ringkasan

Artikel ini memperkenalkan pengecualian dalam Python secara terperinci, termasuk jenis pengecualian, kaedah pengendalian pengecualian, surih tindanan pengecualian, dsb. Apabila menulis atur cara Python, pengendalian pengecualian adalah kemahiran yang amat diperlukan dan penting Hanya dengan mengendalikan pengecualian dalam atur cara dapat kestabilan dan ketepatan program tersebut.

Atas ialah kandungan terperinci Penjelasan terperinci tentang pengecualian dalam Python. 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