Найти тему
Fakeminer

Python для продвинутых #1 - Как создать свою ошибку?

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

Как это сделать? Создайте обычный класс, но сделайте его наследником Exception, я поместил туда конструктор который просто ничего не делает:

class NegativeError(Exception):
def __init__(self):
pass

Я, кстати, создал для этой ошибки отдельный файл, потом поймете зачем. А пока что давайте реализуем примитивный класс, который будет использовать эту ошибку. Он будет принимать какое-то число, а потом делать с ним какие-либо действия. Умножение, сложение, вычитание и т.д.

Итак, я реализовал вот такой класс:

Конструктор, который будет заполнять число:

def __init__(self, number):
self.number = number

И дальше разные действия:

-2

Давайте же проверим этот класс:

-3
-4

Да, все работает как надо. А теперь давайте поставим в начале отрицательное число. Не зря же я класс NegativeError назвал:

-5

Получается просто куча чисел, которые, конечно, выполнились, но наоборот. Но программист, установивший наш модуль, конечно же подумает что же это такое, почему это так работает и так далее. Ну так давайте же сделаем ему подводку к тому, что он накосячил, а не я, вызовем нашу ошибку, если число меньше или равно нулю, с помощью raise(string), вот так:

if number <= 0:
raise NegativeError("Enter a Positive number!")

И вот что у нас получилось в консоли:

-6

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

Ну а на этом сегодня все, чаще ошибайтесь, чо сказать xD