Exception
(или от одного из его подклассов).
Оно позволяет определить свои собственные типы ошибок, специфичные для вашего приложения или библиотеки.
Это повышает читаемость кода и упрощает обработку конкретных ситуаций, которые не покрываются стандартными исключениями.
Собственное исключение в Python – это класс, который наследуется от базового класса Exception
или одного из его подклассов, и предназначен для сигнализации об ошибках, специфичных для вашего приложения или библиотеки. Создание собственных исключений позволяет сделать код более читаемым, поддерживаемым и информативным, особенно при обработке нестандартных ситуаций.
Зачем нужны собственные исключения?
ValueError
, вы можете создать исключение InvalidConfigurationError
, если проблема возникла при чтении файла конфигурации.try...except
и обрабатывать их по-разному, в зависимости от типа ошибки. Это обеспечивает более гибкую и точную обработку ошибок.Как создать собственное исключение?
Простейший способ – создать класс, который наследуется от Exception
:
class MyCustomError(Exception):
"""Базовый класс для собственных исключений в моем модуле."""
pass
class SpecificError(MyCustomError):
"""Исключение, возникающее при определенной ситуации."""
def __init__(self, message="Произошла специфическая ошибка"):
self.message = message
super().__init__(self.message)
def __str__(self):
return f"SpecificError: {self.message}"
Использование собственного исключения:
def my_function(value):
if value < 0:
raise SpecificError("Значение не может быть отрицательным")
return value * 2
try:
result = my_function(-5)
print(result)
except SpecificError as e:
print(f"Поймано исключение: {e}")
except MyCustomError as e:
print(f"Поймано более общее исключение: {e}")
except Exception as e:
print(f"Поймано какое-то другое исключение: {e}")
Лучшие практики:
MyCustomError
) и создавайте подклассы для более конкретных случаев.message
или переопределите метод __str__
.Таким образом, собственные исключения – мощный инструмент для создания надежного и понятного кода на Python, который позволяет эффективно обрабатывать специфичные ошибки и делает процесс отладки гораздо проще.