Рубрики
Без рубрики

Исключения на заказ Python

Исключение поднимается всякий раз, когда возникает ошибка, и она означает, что что-то пошло не так с программой. По умолчанию есть много

Автор оригинала: Pankaj Kumar.

Исключение поднимается всякий раз, когда возникает ошибка, и она означает, что что-то пошло не так с программой. По умолчанию есть много исключений, которые язык определяет для нас, например Типеррор когда неправильный тип передан. В этой статье мы посмотрим, как мы можем создать наши собственные пользовательские исключения в Python.

Но прежде чем мы посмотрим на то, как реализованы пользовательские исключения, давайте узнаем, как мы могли бы поднять различные типы исключений в Python.

Поднять исключения

Python позволяет программисту поднять исключение вручную, используя поднять ключевое слово.

Формат: Поднять исключение

Функция ниже поднимает разные исключения в зависимости от входа, передаваемого на функцию.

def exception_raiser(string):
    if isinstance(string, int):
        raise ValueError
    elif isinstance(string, str):
        raise IndexError
    else:
        raise TypeError

Выход :

>>> exception_raiser(123)
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 3, in exception_raiser
ValueError
>>> exception_raiser('abc')
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 5, in exception_raiser
IndexError
>>> exception_raiser([123, 456])
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 7, in exception_raiser
TypeError

Как вы можете наблюдать, разные типы исключений поднимаются на основе ввода, в выборе программиста. Это обеспечивает хорошую гибкость обработки ошибок, поскольку мы можем активно предсказать, почему исключение может быть повышено.

Определение пользовательских исключений

Точно так же Python также позволяет нам определить наши собственные пользовательские исключения. Мы полностью контролируем то, что может сделать это исключение, и когда его можно поднять, используя поднять ключевое слово. Давайте посмотрим, как мы можем определить и реализовать некоторые пользовательские исключения.

1. Создайте пользовательский класс исключения

Мы можем создать пользовательский класс исключения для определения нового исключения. Опять же, идея использования класса – потому что Python относится к всему классу. Так что это не кажется, что OURLADES, что исключение может быть классом, а также!

Все исключения наследуют родителей Исключение Класс, который мы также наследуем при создании нашего класса.

Мы создадим класс под названием MyException , который поднимает исключение только в том случае, если вход передан ему список, а количество элементов в списке нечетное.

class MyException(Exception):
	pass

def list_check(lst):
    if len(lst) % 2 != 0:
        raise MyException

# MyException will not be raised
list_check([1, 2, 3, 4])

# MyException will be raised
list_check([1, 3, 5])    

Выход :

root@AskPython:~# python3 exceptions.py
Traceback (most recent call last):
  File "exceptions.py", line 12, in 
    list_check([1, 3, 5])
  File "exceptions.py", line 6, in list_check
    raise MyException
__main__.MyException

2. Добавьте пользовательское сообщение и ошибка

Мы можем добавить наши собственные сообщения об ошибках и распечатать их в консоль для нашего пользовательского исключения. Это включает в себя прохождение двух других параметров в нашем MyException класс, сообщение и Ошибка . Параметры.

Давайте изменим наш оригинальный код для учета пользовательских Сообщение и Ошибка . для нашего исключения.

class MyException(Exception):
    def __init__(self, message, errors):
        # Call Exception.__init__(message)
        # to use the same Message header as the parent class
        super().__init__(message)
        self.errors = errors
        # Display the errors
        print('Printing Errors:')
        print(errors)

def list_check(lst):
    if len(lst) % 2 != 0:
        raise MyException('Custom Message', 'Custom Error')

# MyException will not be raised
list_check([1, 2, 3, 4])

# MyException will be raised
list_check([1, 3, 5])

Выход :

Printing Errors:
Custom Error
Traceback (most recent call last):
  File "exceptions.py", line 17, in 
    list_check([1, 3, 5])
  File "exceptions.py", line 11, in list_check
    raise MyException('Custom Message', 'Custom Error')
__main__.MyException: Custom Message

Таким образом, мы успешно реализовали наши собственные пользовательские исключения, включая добавление пользовательских сообщений об ошибках для целей отладки! Это может быть очень полезно, если вы строите библиотеку/API, и другой программист хочет знать, что именно пошло не так, когда на заказ высокий исключений.

Заключение

В этой статье мы узнали, как поднять исключения, используя поднять Ключевое слово, а также создавайте наши собственные исключения, используя класс и добавьте сообщения об ошибках на наше исключение.

Рекомендации