Чтобы вызвать собственное исключение в Python, нужно:
Exception или одного из его подклассов.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, необходимо выполнить следующие шаги:
Exception или одного из его подклассов (например, ValueError, TypeError). Имя класса должно отражать суть исключительной ситуации. Часто добавляют суффикс "Error" или "Exception".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 блок выполнится в любом случае, будь то исключение или нет. Он часто используется для освобождения ресурсов.Важно: Вызывайте исключения только в тех случаях, когда программа не может продолжить выполнение в нормальном режиме. Не используйте исключения для обычного контроля потока выполнения, поскольку это может негативно повлиять на производительность.