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
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}")
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!