class CustomError(Exception):
def __init__(self, message, code):
super().__init__(message)
self.code = code
try:
# ... какой-то код ...
raise CustomError("Произошла ошибка", 500)
except CustomError as e:
print(f"Ошибка: {e}, Код: {e.code}")
В этом примере `CustomError` принимает `message` и `code` как параметры. `message` передается в конструктор родительского класса `Exception`, а `code` сохраняется как атрибут экземпляра исключения. При обработке исключения мы можем получить доступ к обоим параметрам (`e.message` и `e.code`).
Да, в пользовательском исключении в Python можно использовать несколько параметров. Это позволяет передавать более подробную информацию о возникшей ошибке, что может быть полезно при отладке и обработке исключений.
Пример:
class CustomError(Exception):
def __init__(self, message, error_code, details=None):
super().__init__(message) # Вызываем конструктор базового класса
self.message = message
self.error_code = error_code
self.details = details
def __str__(self):
return f"CustomError: {self.message}, Code: {self.error_code}, Details: {self.details}"
try:
# Представим ситуацию, когда происходит ошибка при обработке данных
data = "invalid_data"
if not data.isdigit():
raise CustomError("Invalid data format", 1001, {"field": "data", "value": data})
except CustomError as e:
print(f"Произошла ошибка: {e}")
print(f"Код ошибки: {e.error_code}")
if e.details:
print(f"Детали: {e.details}")
Объяснение:
CustomError, наследующийся от базового класса Exception.__init__ мы принимаем несколько параметров: message (текстовое описание ошибки), error_code (числовой код ошибки), и details (словарь с дополнительной информацией).Exception через super().__init__(message), чтобы корректно инициализировать сообщение об ошибке.self.message, self.error_code, self.details).__str__ для более информативного представления исключения при его выводе.try...except мы возбуждаем исключение CustomError с передачей нескольких параметров.except мы можем получить доступ к этим параметрам через атрибуты экземпляра исключения (e.message, e.error_code, e.details).Этот подход позволяет вам передавать структурированную информацию об ошибке, что облегчает ее анализ и обработку.