Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mencipta dan Mengendalikan Pengecualian Tersuai dengan Berkesan dalam Python Moden?

Bagaimanakah Saya Boleh Mencipta dan Mengendalikan Pengecualian Tersuai dengan Berkesan dalam Python Moden?

Mary-Kate Olsen
Lepaskan: 2024-12-18 18:04:10
asal
123 orang telah melayarinya

How Can I Create and Handle Custom Exceptions Effectively in Modern Python?

Pengendalian Pengecualian Tersuai dalam Python Moden

Dalam Python, mentakrifkan kelas pengecualian tersuai adalah penting untuk mengurus ralat dan memastikan kestabilan kod. Pendekatan yang betul untuk berbuat demikian telah berkembang berbanding versi Python dan artikel ini meneroka pengesyoran untuk "Python moden", memfokuskan pada keserasian dengan Python 2.5 dan pematuhan kepada piawaian Python 2.6 dan 3.*.

Pengisytiharan Pengecualian Tersuai

Amaran penamatan dalam Python 2.6.2 menunjukkan tetapan itu atribut mesej BaseException tidak digalakkan. Menurut PEP-352, atribut ini mempunyai makna khusus dalam Python 2.5 yang sedang dihentikan secara berperingkat. Oleh itu, pengecualian tersuai harus mengelak daripada menggunakan mesej sebagai nama atribut.

Sebaliknya, adalah disyorkan untuk mengatasi kaedah __init__ Pengecualian, menghantar mesej yang dikehendaki sebagai parameter. Ini membolehkan mesej diakses melalui kaedah __str__ atau __unicode__ pengecualian, yang dipanggil secara automatik apabila pengecualian ditukar kepada rentetan.

Melalui Data Tambahan

Untuk memasukkan data tambahan dalam pengecualian tersuai, adalah perkara biasa untuk menghantar argumen tambahan kepada kaedah __init__. Argumen ini boleh disimpan sebagai atribut contoh pengecualian dan diakses mengikut keperluan. Dalam Python 2, adalah perlu untuk memanggil pembina kelas super secara eksplisit menggunakan super() untuk memanggil pembina kelas asas.

Contoh

Contoh tersuai yang lebih terperinci pengecualian:

class ValidationError(Exception):
    def __init__(self, message, errors):
        super().__init__(message)
        self.errors = errors
Salin selepas log masuk

Dalam contoh ini, pengecualian ValidationError mengambil mesej dan ralat kamus sebagai hujah. Kamus ralat boleh mengandungi maklumat tambahan tentang ralat. Mengakses maklumat ini dalam kod di mana pengecualian ditangkap kini mudah, seperti:

try:
    # Code that may throw a ValidationError
except ValidationError as e:
    print(f"Error: {e.message}")
    print(f"Errors: {e.errors}")
Salin selepas log masuk

Walaupun mengatasi __init__ dan __str__ mungkin kelihatan seperti lebih menaip, ia memastikan keserasian dengan semua versi Python dan menyediakan kaedah yang konsisten untuk mengakses data pengecualian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta dan Mengendalikan Pengecualian Tersuai dengan Berkesan dalam Python Moden?. 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