Найти в Дзене
IT для всех

Python. Как создать собственное исключение?

Как мы помним: исключения - это код, который выполняется когда происходит ошибка. И названия исключений прописаны в документации.

Но можно писать и собственные исключения.

Допустим мы хотим, чтобы list позволял добавить только четные числа. Для начала требуется написать класс исключения. Напишем, например, по смыслу - NonEvenError.

NonEvenError будет бросаться при попытке добавить в list нечётное число:

Он унаследован от класса Exception и больше ничего от него не требуется, поэтому стоит заглушка - pass.

Далее требуется переопределить класс List, для этого напишем класс EvenList:

-2

Здесь мы также наследуем, но уже от List-а. Так как мы хотели, чтобы исключение срабатывало при добавлении элементов, то переопределим метод append.

Пишем обычный if проверки на чётность и в его теле прописываем ключевое слово super. Super - означает, что мы используем метод из наследуемого класса List, то есть append с аргументом x.

Иначе бросаем наше исключение, с помощью команды raise. Также не забываем передать в исключение аргумент.

Теперь всё готово, чтобы проверить работу нашего собственного исключения. Создадим объект класса EvenList и попытаемся добавить в него нечетное число:

-3

При запуске увидим ошибку:

__main__.NonEvenError: 3

То есть программа прервалась с нашей собственной ошибкой и был передан аргумент, который её вызвал.

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