class InvalidInputError(Exception):
def __init__(self, input_value):
self.input_value = input_value
def __str__(self):
return f"Invalid input: {self.input_value}"
try:
raise InvalidInputError("не число")
except InvalidInputError as e:
print(e)
При выполнении данного кода будет выведено сообщение об ошибке, определённое в методе __str__
класса InvalidInputError
.
В блоке try
происходит генерация исключения InvalidInputError
с аргументом "не число"
.
Блок except
перехватывает это исключение и присваивает его переменной e
.
Затем вызывается функция print(e)
, которая неявно вызывает метод __str__
объекта исключения e
.
В результате в консоль будет выведено: Invalid input: не число
Этот код демонстрирует создание и использование пользовательского исключения (custom exception) в Python.
InvalidInputError
:
InvalidInputError
наследуется от встроенного класса Exception
. Это делает его пользовательским исключением.
__init__
принимает один аргумент input_value
, который сохраняется в атрибуте экземпляра self.input_value
. Это позволяет сохранить информацию о том, какое именно значение вызвало исключение.
__str__
переопределен для возврата понятного строкового представления исключения. Он формирует сообщение об ошибке, включающее значение input_value
.
try...except
:
try
: Внутри этого блока происходит попытка выполнения кода, который может вызвать исключение. В данном случае, явно вызывается исключение InvalidInputError
с аргументом "не число"
.
except InvalidInputError as e
: Этот блок обрабатывает исключение типа InvalidInputError
. Когда исключение InvalidInputError
возникает в блоке try
, управление передается в этот блок except
.
as e
: Позволяет присвоить пойманное исключение переменной e
, что позволяет получить доступ к информации об исключении (в данном случае, к атрибуту input_value
).
print(e)
: Выводит строковое представление исключения на консоль. Благодаря переопределенному методу __str__
, будет выведено сообщение "Invalid input: не число".
В результате выполнения кода на консоль будет выведено следующее сообщение:
Invalid input: не число