Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Harus Mereka Bentuk Pengecualian Tersuai dalam Python Moden?
Kekeliruan Pengisytiharan Pengecualian Tersuai dalam Python
Dalam bidang pengendalian pengecualian Python, pengisytiharan kelas pengecualian tersuai telah melalui semakan yang ketara. Untuk menyelaraskan dengan amalan terbaik kontemporari, adalah penting untuk memahami konvensyen semasa.
Kelas Pengecualian Tersuai dengan Data Tambahan
Untuk memasukkan data tambahan ke dalam pengecualian tersuai, ia adalah kini disyorkan untuk mengatasi kaedah init, menghantar sebarang maklumat yang dikehendaki sebagai hujah. Contohnya:
class ValidationError(Exception): def __init__(self, message, errors): # Call the base class constructor with required parameters super().__init__(message) # Include custom data self.errors = errors
Pendekatan ini membenarkan pengambilan semula data tambahan kemudian menggunakan e.errors.
Mengelakkan Amaran Penamatan
Penangguhan daripada BaseException.message telah memperkenalkan kemungkinan perangkap. Untuk mengelakkan amaran ini, adalah penting untuk mengelak daripada menggunakan atribut mesej secara langsung. Sebaliknya, ganti kaedah str__, __unicode__ dan __repr untuk mengawal perwakilan mesej pengecualian.
Menggunakan hujah lwn. Argumen Kedudukan
Dalam versi Python sebelumnya, penggunaan *args disyorkan untuk menghantar argumen tambahan kepada pembina pengecualian. Walau bagaimanapun, dalam Python 3, argumen kedudukan harus digunakan sebaliknya. Ini membolehkan kod yang lebih eksplisit dan mantap.
class ValidationError(Exception): def __init__(self, message, errors): super().__init__(message) self.errors = errors
Dengan mematuhi prinsip ini, pembangun boleh mencipta kelas pengecualian tersuai yang mematuhi sepenuhnya piawaian Python moden dan mengekalkan keserasian dengan alatan pengendalian pengecualian sedia ada.
Atas ialah kandungan terperinci Bagaimanakah Saya Harus Mereka Bentuk Pengecualian Tersuai dalam Python Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!