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


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

try:
    raise MyError(404, "Не найдено")
except MyError as e:
    print(f"Code: {e.code}, Message: {e.message}")

Код создаёт пользовательское исключение MyError, наследующее от Exception. При создании экземпляра MyError передаются код и сообщение. В блоке try это исключение вызывается с кодом 404 и сообщением "Не найдено". Блок except перехватывает MyError, присваивая его переменной e. Затем выводится отформатированная строка, содержащая код и сообщение исключения: "Code: 404, Message: Не найдено".

Разбор кода и объяснение задачи:

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

1. Определение пользовательского исключения:


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

Здесь мы определяем класс `MyError`, который наследуется от встроенного класса `Exception`. Это означает, что `MyError` является новым типом исключения. Конструктор `__init__` принимает два аргумента: `code` (целочисленный код ошибки) и `message` (строковое описание ошибки). Эти значения сохраняются в атрибутах экземпляра класса `self.code` и `self.message`.

2. Генерация исключения:


try:
    raise MyError(404, "Не найдено")
except MyError as e:
    print(f"Code: {e.code}, Message: {e.message}")
  

Блок `try` предназначен для отслеживания исключений. Внутри блока `try` вызывается оператор `raise MyError(404, "Не найдено")`. `raise` генерирует исключение типа `MyError`, передавая код ошибки 404 и сообщение "Не найдено" в конструктор класса `MyError`.

3. Обработка исключения:

Блок `except MyError as e` предназначен для обработки исключения типа `MyError`. Если в блоке `try` было сгенерировано исключение типа `MyError`, то управление передается в блок `except`. `as e` присваивает экземпляр сгенерированного исключения переменной `e`. Затем внутри блока `except` выводится отформатированная строка, которая содержит код ошибки и сообщение об ошибке, используя f-строку. `e.code` и `e.message` позволяют получить доступ к атрибутам экземпляра исключения.

Ожидаемый результат:

Код выведет на консоль следующую строку:


Code: 404, Message: Не найдено
  

Важные моменты:

  • Создание пользовательских исключений позволяет более структурированно обрабатывать ошибки в программе.
  • Можно определить сколько угодно атрибутов в классе исключений, чтобы передавать дополнительную информацию об ошибке.
  • Оператор `raise` используется для генерации исключений.
  • Блоки `try...except` используются для отслеживания и обработки исключений.
0