Вопрос проверяет понимание необходимости создания пользовательских исключений для улучшения обработки ошибок и читаемости кода.
Собственные исключения (пользовательские классы исключений) создаются для того, чтобы сделать обработку ошибок более осмысленной и структурированной. Вместо того чтобы использовать общие исключения, такие как Exception или RuntimeException, вы можете определить класс, который точно описывает проблему, произошедшую в вашем приложении.
UserNotFoundException, он сразу понимает, что пользователь не найден, без необходимости читать сообщение об ошибке.AppException) и наследовать от него более конкретные (ValidationException, DatabaseException). Это упрощает централизованную обработку.class UserNotFoundError(Exception):
"""Исключение, когда пользователь не найден."""
def __init__(self, user_id, message="User not found"):
self.user_id = user_id
self.message = f"{message}: {user_id}"
super().__init__(self.message)
def get_user(user_id):
if user_id != 42:
raise UserNotFoundError(user_id)
return {"id": 42, "name": "Alice"}
try:
user = get_user(1)
except UserNotFoundError as e:
print(f"Error: {e}") # Error: User not found: 1Пользовательские исключения широко используются в больших проектах, фреймворках и библиотеках. Они помогают отделить логику приложения от инфраструктурного кода. Например, в веб-приложениях можно создать исключения для разных HTTP-статусов (NotFoundException для 404, BadRequestException для 400).
Вывод: Создание собственных исключений — это лучшая практика для написания поддерживаемого и понятного кода. Применяйте их, когда стандартные исключения не могут точно описать ошибку, или когда нужно построить иерархию ошибок для вашего домена.