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

Пользователь

от gage , в категории: Python , 3 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 3 года назад

@gage  Для того, чтобы создать собственное исключение - вы можете воспользоваться try, except и raise

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def iter(x):
    '''
    Функция, которая принимает на вход число, а возвращает это же число, но на 1 больше
    '''

    try: # Создаем блоки try/except
        return x + 1
    
    except TypeError: # В случае TypeError'а мы обозначим ошибку в консоль
        raise TypeError("Function expected to receive int-value")

print(iter(5)) # Вывод : 6
print(iter("dropcode.ru")) # Вывод : (Подробности ошибки) + TypeError: Function expected to receive int-value


Пользователь

от kameron , год назад

@gage 

Чтобы создать собственное исключение в Python, необходимо создать класс, который будет наследоваться от класса Exception или его производных классов (например, ValueError, TypeError и т.д.). Внутри класса исключения можно определить свои параметры и методы.


Например, чтобы создать исключение InvalidInput, можно написать следующий код:

1
2
3
4
class InvalidInput(Exception):
    def __init__(self, message="Invalid input."):
        self.message = message
        super().__init__(self.message)


Здесь мы создали класс InvalidInput, который наследуется от класса Exception. В конструкторе класса мы определили свойство message, которое содержит сообщение об ошибке, по умолчанию устанавливаемое как "Invalid input.".


Затем мы вызываем конструктор родительского класса с помощью метода super(), передавая ему сообщение об ошибке в качестве аргумента.


Теперь этим исключением можно пользоваться в своих программах:

1
2
3
4
5
6
try:
    x = int(input("Введите число: "))
    if x < 0:
        raise InvalidInput("Число должно быть положительным.")
except InvalidInput as e:
    print(e.message)


Здесь мы создали конструкцию try-except, в которой пытаемся преобразовать введенную пользователем строку в число. Если это число отрицательное, мы вызываем исключение InvalidInput, передавая ему соответствующее сообщение. В блоке except мы перехватываем это исключение и выводим сообщение об ошибке, которое мы определили при создании исключения.