Rumah > pembangunan bahagian belakang > Tutorial Python > Pengendalian Pengecualian dalam Python

Pengendalian Pengecualian dalam Python

Mary-Kate Olsen
Lepaskan: 2024-12-06 20:19:12
asal
748 orang telah melayarinya

Exception Handling in Python

Artikel ini meneroka pelbagai teknik yang digunakan untuk mengendalikan pengecualian dalam Python, termasuk blok cuba kecuali, pengecualian tersuai dan ciri lanjutan seperti rantaian pengecualian dan pengayaan.


Python menyediakan rangka kerja pengendalian pengecualian yang teguh yang bukan sahaja membenarkan pengaturcara melaksanakan kod yang menghalang ranap tetapi juga menawarkan maklum balas dan mengekalkan kestabilan aplikasi. Selain itu, ia membolehkan pembangun mengurus ralat dengan anggun menggunakan binaan seperti blok cuba kecuali, pengecualian tersuai dan banyak lagi.

- Blok Try-Except

Dalam blok cuba-kecuali, kod yang mungkin menimbulkan pengecualian diletakkan dalam blok cuba dan blok-kecuali menentukan tindakan yang perlu diambil jika pengecualian berlaku (Python Software Foundation, n.d.).

Contohnya:

try:
    result = 1 / 0
except ZeroDivisionError:
    print("Cannot divide by zero.")
Salin selepas log masuk
Salin selepas log masuk

Untuk menangkap berbilang pengecualian dalam satu blok cuba kecuali, kita boleh menggunakan blok cuba dengan beberapa blok kecuali untuk menjana respons khusus bagi setiap jenis pengecualian. Atau, kita boleh menggunakan tuple untuk menangkap berbilang pengecualian dengan ungkapan pengecualian tunggal.

Contohnya:

# One try block and several except blocks
try:
    result = 1 / 'a'
except ZeroDivisionError:
    print("Cannot divide by zero.")
except TypeError:
    print("Type error occurred.")

# One try block and one except tuple block
try:
    # some operation
    result = 1 / 'a'
except (ZeroDivisionError, TypeError) as e:
    print(f"Error occurred: {e}")
Salin selepas log masuk
Salin selepas log masuk

- Fasal Lain

Klausa else, diletakkan selepas blok cuba kecuali dan dijalankan jika blok cuba tidak menimbulkan pengecualian.

Contohnya:

try:
    result = 1 / 2
except ZeroDivisionError:
    print(“Cannot divide by zero.”)
else:
    print(“Division successful.”)
Salin selepas log masuk

- Fasal Akhirnya

Klausa akhirnya sentiasa diletakkan selepas blok cuba atau mana-mana blok kecuali. Ia mengandungi kod yang berjalan tidak kira apa pun, biasanya untuk membersihkan sumber seperti fail atau sambungan rangkaian, walaupun pengecualian telah dibangkitkan.

Contohnya:

try:
    result = 1 / ‘a’
except ZeroDivisionError:
    print(“Cannot divide by zero.”)
except TypeError:
    print(“Type error occurred.”)
else:
    print(“Division successful.”)
finally:
    print(“Goodbye, world!”)
Salin selepas log masuk
  • Kenyataan Naikkan

Meningkatkan pengecualian: klausa kenaikan menimbulkan pengecualian dengan memaksa pengecualian berlaku, biasanya untuk menunjukkan bahawa syarat tertentu belum dipenuhi.

Contohnya:

if ‘a’ > 5:
    raise ValueError(“A must not exceed 5”)
Salin selepas log masuk

- Rantaian Pengecualian

Anda boleh merantai pengecualian dengan kenaikan klausa. Ini berguna untuk menambahkan konteks pada ralat asal.

Sebagai Contoh

try:
    open(‘myfile.txt’)
except FileNotFoundError as e:
    raise RuntimeError(“Failed to open file”) from e
Salin selepas log masuk

- Pengecualian tersuai

Anda boleh menentukan kelas pengecualian anda sendiri dengan mewarisi daripada kelas Pengecualian atau mana-mana kelas pengecualian terbina dalam yang lain (Mitchell, 2022).

Contohnya:

class My_custom_ (Exception):
    pass

try:
    raise MyCustomError(“An error occurred”)
except MyCustomError as e:
    print(e)
Salin selepas log masuk

- Memperkayakan pengecualian

anda boleh menambah maklumat atau konteks pada pengecualian dengan menggunakan kaedah add_note() untuk 'menambah' mesej atau nota tersuai pada objek pengecualian aka e.

Contohnya:

def divide_numbers(a, b):
    try:
        result = a / b
    except ZeroDivisionError as e:
        e.add_note(“Cannot divide by zero”)
        e.add_note(“Please provide a non-zero divisor”)
        raise
try:
    num1 = 10
    num2 = 0
    divide_numbers(num1, num2)
except ZeroDivisionError as e:
    print(“An error occurred:”)
    print(str(e))
Salin selepas log masuk

Mengendalikan pengecualian adalah penting atas beberapa sebab:

  1. Menghalang ranap program: Pengecualian yang tidak dikendalikan boleh menyebabkan program ranap, membawa kepada kehilangan data dan pengalaman pengguna yang buruk.
  2. Menyediakan mesej ralat yang bermakna: Dengan mengendalikan pengecualian, anda boleh memberikan pengguna mesej ralat bermaklumat yang membantu mereka memahami perkara yang salah dan cara membetulkannya.
  3. Membenarkan kemerosotan yang anggun: Pengendalian pengecualian membolehkan program terus berjalan walaupun ralat berlaku.

Contoh pengendalian ralat program yang mudah:

try:
    result = 1 / 0
except ZeroDivisionError:
    print("Cannot divide by zero.")
Salin selepas log masuk
Salin selepas log masuk
# One try block and several except blocks
try:
    result = 1 / 'a'
except ZeroDivisionError:
    print("Cannot divide by zero.")
except TypeError:
    print("Type error occurred.")

# One try block and one except tuple block
try:
    # some operation
    result = 1 / 'a'
except (ZeroDivisionError, TypeError) as e:
    print(f"Error occurred: {e}")
Salin selepas log masuk
Salin selepas log masuk

Untuk meringkaskan, Python menyediakan rangka kerja pengendalian pengecualian komprehensif yang membolehkan program mengendalikan situasi yang tidak dijangka tanpa gagal secara tiba-tiba. Dengan menggunakan binaan seperti blok cuba kecuali, pengecualian tersuai dan ciri lanjutan seperti rantaian pengecualian dan pengayaan, pembangun boleh memastikan program mereka berdaya tahan, mesra pengguna dan mampu mengendalikan senario yang tidak dijangka dengan anggun.


Rujukan:

Mitchell R (2022, 13 Jun). Pengecualian tersuai. _Python Essential Training _[VIDEO]. Pembelajaran LinkedIn. https://www.linkedin.com/learning/python-essential-training-14898805/custom-exceptions?autoSkip=true&resume=false&u=2245842

Yayasan Perisian Python. (n.d.). 8. Ralat dan Pengecualian. Ular sawa. python.org.


Pada asalnya diterbitkan di Exception Handling in Python - Medium pada 21 Ogos 2024.

Atas ialah kandungan terperinci Pengendalian Pengecualian dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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