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


class MyError(Exception):
    def __init__(self, message):
        self.message = message

try:
    raise MyError("Что-то пошло не так")
except MyError as e:
    print(e.message)

Этот код определяет пользовательское исключение MyError, которое принимает сообщение при инициализации. Затем, в блоке try, вызывается исключение MyError с сообщением "Что-то пошло не так". Блок except перехватывает это исключение и выводит сообщение, хранящееся в атрибуте message экземпляра исключения e. В результате, на экран будет выведено: "Что-то пошло не так".

Разбор кода:

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

  1. Определение класса исключения:
    • Определяется класс MyError, который наследуется от базового класса Exception. Это необходимо, чтобы MyError стал полноценным исключением.
    • Конструктор __init__ класса MyError принимает один аргумент message, который используется для хранения описания ошибки. Это описание ошибки сохраняется в атрибуте экземпляра self.message.
  2. Блок try...except:
    • try: Внутри блока try генерируется исключение MyError с сообщением "Что-то пошло не так". Оператор raise используется для явного вызова исключения.
    • except MyError as e: Блок except перехватывает исключение типа MyError. as e присваивает перехваченное исключение переменной e.
    • Внутри блока except выводится значение атрибута e.message, который содержит сообщение об ошибке, переданное при создании исключения.

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

При выполнении кода в консоль будет выведено следующее:

Что-то пошло не так

Объяснение:

Сначала вызывается исключение MyError. Затем, благодаря блоку try...except, исключение перехватывается. В блоке except печатается сообщение, связанное с исключением, которое было передано при его создании.

Важность в контексте собеседования:

Данный пример проверяет понимание следующих концепций Python:

  • Создание и использование пользовательских исключений.
  • Использование блоков try...except для обработки исключений.
  • Доступ к атрибутам объектов исключений.
  • Наследование классов (в данном случае, от Exception).
0