Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan ralat pengendalian pengecualian Python?

Bagaimana untuk menyelesaikan ralat pengendalian pengecualian Python?

王林
王林asal
2023-06-24 20:22:011813semak imbas

Dalam Python, pengendalian pengecualian adalah sangat penting. Semasa pelaksanaan program, keadaan yang tidak dijangka mungkin berlaku, seperti ralat input, kegagalan membaca fail, dsb., dalam hal ini program akan membuang pengecualian. Jika kami tidak mengendalikan pengecualian ini tepat pada masanya, program akan ranap atau gagal berjalan seperti biasa. Oleh itu, adalah sangat penting untuk mempelajari cara menyelesaikan ralat pengendalian pengecualian Python.

Kandungan utama artikel ini merangkumi aspek berikut:

  1. Jenis pengecualian dan kaedah pengendaliannya
  2. Maksud mesej ralat
  3. Kelas pengecualian tersuai
  4. Amalan terbaik untuk pengendalian pengecualian
dan Its

1. kaedah pemprosesan

Dalam Python, jenis pengecualian biasa termasuk:
  • SyntaxError: ralat sintaks
  • NameError: ralat nama, pembolehubah tidak wujud
  • TypeError: ralat taip, seperti beroperasi pada jenis data yang berbeza
  • :Vamericallueror ralat, seperti nilai input tidak memenuhi keperluan
  • IndexError: Ralat indeks, senarai atau tuple di luar sempadan
  • KeyError: Ralat kunci, kunci tidak wujud dalam kamus
  • IOError: Ralat input dan output, seperti kerana fail itu tidak wujud

Kita boleh menggunakan pernyataan cuba-kecuali untuk menangkap pengecualian ini dan mengendalikannya. Pernyataan cuba digunakan untuk melaksanakan kod yang boleh menyebabkan pengecualian Jika berlaku pengecualian, blok kod yang dinyatakan dalam pernyataan kecuali dilaksanakan untuk mengendalikan pengecualian. Berikut adalah contoh:

try:
    # 可能会出现异常的代码
except 异常类型 as 错误变量:
    # 处理异常的代码

Antaranya, jenis pengecualian ialah pengecualian yang ingin kita tangkap, yang boleh menjadi berbilang jenis, dan boleh diabaikan pembolehubah ralat ialah nama pembolehubah yang digunakan untuk menyimpan maklumat pengecualian, yang boleh ditinggalkan.

Sebagai contoh, mari kita lihat pengendalian ralat pembahagian:

while True:
    try:
        num1 = int(input("请输入第一个数:"))
        num2 = int(input("请输入第二个数:"))
        result = num1 / num2
        print("结果为:", result)
    except ValueError:
        print("输入的必须是数字,请重新输入!")
    except ZeroDivisionError:
        print("第二个数不能是0,请重新输入!")

Dalam contoh ini, kami menggunakan dua kecuali pernyataan untuk mengendalikan pengecualian ValueError dan ZeroDivisionError masing-masing. Jika input bukan nombor, pengecualian ValueError akan ditangkap jika nombor kedua ialah 0, pengecualian ZeroDivisionError akan ditangkap.

2. Maksud mesej ralat

Apabila atur cara melemparkan pengecualian, Python akan mengeluarkan mesej ralat. Memahami maksud mesej ralat ini boleh sangat membantu dalam menyelesaikan masalah. Di bawah ialah beberapa mesej ralat biasa dan maksudnya.

  • NameError: nama 'xxx' tidak ditakrifkan
    Pembolehubah xxx tidak ditakrifkan Ia mungkin kesilapan ejaan atau pembolehubah tidak ditentukan digunakan.
  • TypeError: jenis operan tidak disokong untuk +: 'int' dan 'str'
    Ralat jenis data, integer dan rentetan tidak boleh ditambah.
  • ValueError: literal tidak sah untuk int() dengan asas 10: 'abc'
    Ralat nilai, rentetan abc tidak boleh ditukar kepada jenis integer.
  • IndexError: senarai indeks di luar julat
    Ralat indeks, elemen senarai yang tidak wujud telah diakses.
  • KeyError: 'xxx'
    Ralat kunci kamus, kunci xxx tidak wujud dalam kamus.
  • IOError: [Errno 2] Tiada fail atau direktori sedemikian: 'xxx'
    Fail ralat input dan output, fail xxx tidak wujud.

Melalui mesej ralat, kita boleh menentukan jenis ralat program dan cuba menyelesaikannya.

3. Kelas pengecualian tersuai

Selain jenis pengecualian terbina dalam Python, kami juga boleh menyesuaikan kelas pengecualian untuk mengendalikan pengecualian tertentu. Kelas pengecualian tersuai perlu mewarisi kelas Pengecualian dan boleh menentukan sifat dan kaedah mereka sendiri dalam kelas. Berikut ialah contoh mudah:

class ValueTooSmallError(Exception):
    # 自定义异常类
    def __init__(self, value, min_value):
        self.value = value
        self.min_value = min_value
    
    def __str__(self):
        return f"输入的值{self.value}太小,最小值为{self.min_value}"

try:
    num = int(input("请输入一个大于10的数:"))
    if num < 10:
        raise ValueTooSmallError(num, 10)
except ValueTooSmallError as e:
    print(e)

Dalam contoh ini, kami mentakrifkan kelas pengecualian ValueTooSmallError untuk mengendalikan kes di mana nilai input kurang daripada 10. Jika nilai input kurang daripada 10, pengecualian ini akan dibuang dan nilai input dan nilai minimum akan dihantar sebagai parameter kepada pembina kelas ValueTooSmallError. Kami juga menulis semula kaedah __str__ untuk mengeluarkan maklumat segera tersuai.

4. Amalan terbaik untuk pengendalian pengecualian

Dalam Python, pengendalian pengecualian ialah kemahiran yang sangat penting. Berikut ialah beberapa amalan terbaik yang digunakan dalam pengaturcaraan dunia sebenar:

  • Nyatakan jenis pengecualian: Dalam penyataan kecuali, adalah lebih baik untuk menentukan jenis pengecualian khusus. Ini mengelakkan pengendalian jenis pengecualian yang tidak berkaitan.
  • Gunakan pernyataan akhirnya: Pernyataan akhirnya digunakan untuk kod yang akan dilaksanakan selepas blok cuba-kecuali dilaksanakan, tidak kira sama ada pengecualian berlaku. Kami biasanya meletakkan keluaran sumber, pembersihan dan kod lain di sini.
  • Jangan terlalu menggunakan cuba-kecuali: Jangan cuba menangkap pengecualian dengan pernyataan cuba-kecuali sepanjang program anda. Ini akan mengurangkan kebolehbacaan dan kebolehselenggaraan program Pernyataan Try-except harus dihadkan kepada blok kod yang perlu mengendalikan pengecualian.
  • Rekod maklumat pengecualian: Dalam program, maklumat setiap pengecualian hendaklah direkodkan, seperti jenis ralat, masa ralat, lokasi ralat, dll., untuk membantu pengaturcara mencari dan menyelesaikan masalah.

Ringkasan

Melalui pengenalan artikel ini, kami telah mempelajari tentang jenis pengecualian biasa dan kaedah pengendaliannya dalam Python. Kami juga mempelajari tentang maksud mesej ralat, kaedah menyesuaikan kelas pengecualian dan amalan terbaik untuk pengendalian pengecualian. Mahir dalam kaedah ini boleh membantu kami menyelesaikan ralat pengendalian pengecualian dalam Python dengan lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat pengendalian pengecualian 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