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).Этот подход позволяет вам передавать структурированную информацию об ошибке, что облегчает ее анализ и обработку.