Что выведет этот код?


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.

Разбор кода

  1. Определение класса исключения InvalidInputError:
    • Класс InvalidInputError наследуется от встроенного класса Exception. Это делает его пользовательским исключением.
    • Конструктор __init__ принимает один аргумент input_value, который сохраняется в атрибуте экземпляра self.input_value. Это позволяет сохранить информацию о том, какое именно значение вызвало исключение.
    • Метод __str__ переопределен для возврата понятного строкового представления исключения. Он формирует сообщение об ошибке, включающее значение input_value.
  2. Блок try...except:
    • Блок try: Внутри этого блока происходит попытка выполнения кода, который может вызвать исключение. В данном случае, явно вызывается исключение InvalidInputError с аргументом "не число".
    • Блок except InvalidInputError as e: Этот блок обрабатывает исключение типа InvalidInputError. Когда исключение InvalidInputError возникает в блоке try, управление передается в этот блок except.
      • as e: Позволяет присвоить пойманное исключение переменной e, что позволяет получить доступ к информации об исключении (в данном случае, к атрибуту input_value).
      • print(e): Выводит строковое представление исключения на консоль. Благодаря переопределенному методу __str__, будет выведено сообщение "Invalid input: не число".

Результат выполнения

В результате выполнения кода на консоль будет выведено следующее сообщение: Invalid input: не число

Зачем нужны пользовательские исключения?

  • Читаемость и понятность кода: Использование пользовательских исключений позволяет сделать код более читаемым и понятным, так как они описывают конкретные типы ошибок, которые могут возникнуть в приложении.
  • Разделение ответственности: Позволяют четко разделить обработку различных типов ошибок.
  • Обработка специфичных ситуаций: Позволяют более гибко обрабатывать специфичные ошибки, например, журналировать их, отправлять уведомления или выполнять другие действия.
  • Повышение надежности приложения: Помогают сделать приложение более надежным, так как позволяют обрабатывать ошибки более эффективно и предотвращать сбои.
0