Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Pengecualian Kustom Python

Pengecualian Khusus Python

Dalam tutorial ini, Anda akan belajar cara mendefinisikan pengecualian khusus tergantung pada kebutuhan Anda dengan bantuan contoh.

Python memiliki banyak pengecualian bawaan yang memaksa program Anda untuk menampilkan kesalahan saat ada yang salah dalam program.

Namun, terkadang Anda mungkin perlu membuat pengecualian khusus Anda sendiri yang sesuai dengan tujuan Anda.


Membuat Pengecualian Khusus

Di Python, pengguna dapat menentukan pengecualian khusus dengan membuat kelas baru. Kelas pengecualian ini harus diturunkan, baik secara langsung maupun tidak langsung, dari Exception . bawaan kelas. Sebagian besar pengecualian bawaan juga diturunkan dari kelas ini.

>>> class CustomError(Exception):
...     pass
...

>>> raise CustomError
Traceback (most recent call last):
...
__main__.CustomError

>>> raise CustomError("An error occurred")
Traceback (most recent call last):
...
__main__.CustomError: An error occurred

Di sini, kami telah membuat pengecualian yang ditentukan pengguna yang disebut CustomError yang mewarisi dari Exception kelas. Pengecualian baru ini, seperti pengecualian lainnya, dapat dimunculkan menggunakan raise pernyataan dengan pesan kesalahan opsional.

Saat kita mengembangkan program Python yang besar, adalah praktik yang baik untuk menempatkan semua pengecualian yang ditentukan pengguna yang dimunculkan oleh program kita dalam file terpisah. Banyak modul standar melakukan ini. Mereka mendefinisikan pengecualian mereka secara terpisah sebagai exceptions.py atau errors.py (umumnya tetapi tidak selalu).

Kelas pengecualian yang ditentukan pengguna dapat mengimplementasikan semua yang dapat dilakukan oleh kelas normal, tetapi kami biasanya membuatnya sederhana dan ringkas. Sebagian besar implementasi mendeklarasikan kelas dasar khusus dan menurunkan kelas pengecualian lain dari kelas dasar ini. Konsep ini dibuat lebih jelas dalam contoh berikut.


Contoh:Pengecualian Buatan Pengguna dengan Python

Dalam contoh ini, kami akan mengilustrasikan bagaimana pengecualian yang ditentukan pengguna dapat digunakan dalam program untuk meningkatkan dan menangkap kesalahan.

Program ini akan meminta pengguna untuk memasukkan nomor sampai mereka menebak nomor yang disimpan dengan benar. Untuk membantu mereka mengetahuinya, petunjuk diberikan apakah tebakan mereka lebih besar atau lebih kecil dari angka yang disimpan.

# define Python user-defined exceptions
class Error(Exception):
    """Base class for other exceptions"""
    pass


class ValueTooSmallError(Error):
    """Raised when the input value is too small"""
    pass


class ValueTooLargeError(Error):
    """Raised when the input value is too large"""
    pass


# you need to guess this number
number = 10

# user guesses a number until he/she gets it right
while True:
    try:
        i_num = int(input("Enter a number: "))
        if i_num < number:
            raise ValueTooSmallError
        elif i_num > number:
            raise ValueTooLargeError
        break
    except ValueTooSmallError:
        print("This value is too small, try again!")
        print()
    except ValueTooLargeError:
        print("This value is too large, try again!")
        print()

print("Congratulations! You guessed it correctly.")

Berikut adalah contoh menjalankan program ini.

Enter a number: 12
This value is too large, try again!

Enter a number: 0
This value is too small, try again!

Enter a number: 8
This value is too small, try again!

Enter a number: 10
Congratulations! You guessed it correctly.

Kami telah mendefinisikan kelas dasar yang disebut Error .

Dua pengecualian lainnya (ValueTooSmallError dan ValueTooLargeError ) yang sebenarnya dimunculkan oleh program kita berasal dari kelas ini. Ini adalah cara standar untuk mendefinisikan pengecualian yang ditentukan pengguna dalam pemrograman Python, tetapi Anda tidak terbatas pada cara ini saja.


Menyesuaikan Kelas Pengecualian

Kami selanjutnya dapat menyesuaikan kelas ini untuk menerima argumen lain sesuai kebutuhan kami.

Untuk mempelajari tentang menyesuaikan kelas Pengecualian, Anda harus memiliki pengetahuan dasar tentang pemrograman Berorientasi Objek.

Kunjungi Pemrograman Berorientasi Objek Python untuk mulai belajar tentang pemrograman Berorientasi Objek dengan Python.

Mari kita lihat salah satu contohnya:

class SalaryNotInRangeError(Exception):
    """Exception raised for errors in the input salary.

    Attributes:
        salary -- input salary which caused the error
        message -- explanation of the error
    """

    def __init__(self, salary, message="Salary is not in (5000, 15000) range"):
        self.salary = salary
        self.message = message
        super().__init__(self.message)


salary = int(input("Enter salary amount: "))
if not 5000 < salary < 15000:
    raise SalaryNotInRangeError(salary)

Keluaran

Enter salary amount: 2000
Traceback (most recent call last):
  File "<string>", line 17, in <module>
    raise SalaryNotInRangeError(salary)
__main__.SalaryNotInRangeError: Salary is not in (5000, 15000) range

Di sini, kami telah mengganti konstruktor Exception kelas untuk menerima argumen kustom kita sendiri salary dan message . Kemudian, konstruktor induk Exception class dipanggil secara manual dengan self.message argumen menggunakan super() .

self.salary khusus atribut didefinisikan untuk digunakan nanti.

__str__ inherited yang diwarisi metode Exception class kemudian digunakan untuk menampilkan pesan yang sesuai ketika SalaryNotInRangeError dibangkitkan.

Kami juga dapat menyesuaikan __str__ metode itu sendiri dengan menimpanya.

class SalaryNotInRangeError(Exception):
    """Exception raised for errors in the input salary.

    Attributes:
        salary -- input salary which caused the error
        message -- explanation of the error
    """

    def __init__(self, salary, message="Salary is not in (5000, 15000) range"):
        self.salary = salary
        self.message = message
        super().__init__(self.message)

    def __str__(self):
        return f'{self.salary} -> {self.message}'


salary = int(input("Enter salary amount: "))
if not 5000 < salary < 15000:
    raise SalaryNotInRangeError(salary)

Keluaran

Enter salary amount: 2000
Traceback (most recent call last):
  File "/home/bsoyuj/Desktop/Untitled-1.py", line 20, in <module>
    raise SalaryNotInRangeError(salary)
__main__.SalaryNotInRangeError: 2000 -> Salary is not in (5000, 15000) range

Untuk mempelajari lebih lanjut tentang bagaimana Anda dapat menangani pengecualian dengan Python, kunjungi Penanganan Pengecualian Python.


Python

  1. Tipe Data Python
  2. Operator Python
  3. Pernyataan lulus python
  4. Argumen Fungsi Python
  5. Kamus Python
  6. Kesalahan Python dan Pengecualian Bawaan
  7. Pemrograman Berorientasi Objek Python
  8. Warisan Python
  9. Python Iterator
  10. type() dan isinstance() dengan Python dengan Contoh