Вопрос №20
Осталось:
Как создать собственное исключение?
Образцовый ответ
Показывать ответ по умолчанию
Собственные исключения создаются путём наследования от класса Exception (или его подклассов).
Простое пользовательское исключение:
class InsufficientFundsError(Exception): pass def withdraw(balance, amount): if amount > balance: raise InsufficientFundsError("Недостаточно средств") return balance - amount try: withdraw(100, 200) except InsufficientFundsError as e: print(e) # Недостаточно средств
Исключение с дополнительными данными:
class ValidationError(Exception): def __init__(self, field, message): self.field = field self.message = message super().__init__(f"{field}: {message}") try: raise ValidationError("email", "Некорректный формат") except ValidationError as e: print(e.field) # email print(e.message) # Некорректный формат
Когда создавать свои исключения:
- Когда встроенные исключения не описывают ошибку достаточно точно.
- Для разделения бизнес-логики ошибок (например, UserNotFoundError, PermissionDeniedError).
- Для удобного перехвата группы связанных ошибок через общий базовый класс.
class AppError(Exception): """Базовое исключение приложения""" pass class NotFoundError(AppError): pass class AccessDeniedError(AppError): pass
