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

Чтобы вызвать собственное исключение в Python, нужно:

  1. Определить класс исключения, который наследуется от Exception или одного из его подклассов.
  2. Использовать ключевое слово raise для выброса исключения, создав экземпляр класса исключения.

class MyCustomError(Exception):
    """Моё собственное исключение."""
    pass

def my_function(value):
    if value < 0:
        raise MyCustomError("Значение должно быть положительным")

try:
    my_function(-1)
except MyCustomError as e:
    print(f"Поймано исключение: {e}")

Чтобы вызвать собственное исключение в Python, необходимо выполнить следующие шаги:

  1. Определить класс исключения: Сначала нужно создать класс, который наследуется от базового класса Exception или одного из его подклассов (например, ValueError, TypeError). Имя класса должно отражать суть исключительной ситуации. Часто добавляют суффикс "Error" или "Exception".
  2. Создать экземпляр исключения: После определения класса необходимо создать экземпляр этого класса. В конструктор экземпляра можно передать сообщение, которое будет содержать информацию об ошибке.
  3. Вызвать исключение с помощью raise: Ключевое слово raise используется для "бросания" исключения. После raise указывается экземпляр исключения, который необходимо вызвать.

Вот пример кода:

    
# Определяем собственное исключение
class MyCustomError(Exception):
    """
    Пользовательское исключение для особых случаев.
    """
    def __init__(self, message="Произошла пользовательская ошибка."):
        self.message = message
        super().__init__(self.message)  # Вызываем конструктор родительского класса

# Функция, которая может вызвать исключение
def process_data(value):
    if value < 0:
        # Создаем экземпляр исключения с сообщением
        raise MyCustomError("Значение не может быть отрицательным.")
    else:
        print("Значение обработано:", value)

# Пример использования с обработкой исключения
try:
    process_data(-5)
except MyCustomError as e:
    print("Поймано исключение:", e)
except Exception as e:
    print("Поймано другое исключение:", e) #обработка других, неожиданных исключений
else:
    print("Все прошло успешно!")
finally:
    print("Завершение блока try-except.")
    
  

Пояснения к коду:

  • Класс MyCustomError наследуется от Exception. Конструктор принимает необязательное сообщение.
  • Функция process_data проверяет, является ли входное значение отрицательным. Если да, то создается экземпляр MyCustomError с соответствующим сообщением, и он вызывается с помощью raise.
  • Блок try...except используется для перехвата и обработки исключения. Если в блоке try возникает MyCustomError, то выполняется блок except MyCustomError as e. e в этом случае содержит экземпляр исключения, и можно получить доступ к его сообщению (e.message).
  • except Exception as e обрабатывает любые другие исключения, которые не были обработаны предыдущими блоками except. Это хорошая практика для предотвращения неожиданного завершения программы.
  • finally блок выполнится в любом случае, будь то исключение или нет. Он часто используется для освобождения ресурсов.

Важно: Вызывайте исключения только в тех случаях, когда программа не может продолжить выполнение в нормальном режиме. Не используйте исключения для обычного контроля потока выполнения, поскольку это может негативно повлиять на производительность.

0