Назад к вопросам
Junior
64
questionbank

Как создать собственный тип исключения в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Для создания собственного исключения необходимо унаследоваться от базового класса Exception (или одного из его подклассов).

# Определение собственного исключения
class MyCustomError(Exception):
    # Переопределение магического метода __init__ для добавления собственных данных
    def __init__(self, message, error_code):
        # Вызов конструктора родительского класса Exception
        super().__init__(message)
        # Добавление собственных атрибутов
        self.error_code = error_code

    # Переопределение магического метода __str__ для красивого вывода
    def __str__(self):
        return f"Ошибка #{self.error_code}: {self.args[0]}"

Пример использования:

# Функция, которая может вызвать наше исключение
def process_data(data):
    if not isinstance(data, int):
        raise MyCustomError("Неверный тип данных", 100)
    if data < 0:
        raise MyCustomError("Число должно быть положительным", 200)
    return data * 2

# Обработка исключения
try:
    result = process_data("hello")
    print(result)
except MyCustomError as e:
    print(f"Перехвачено собственное исключение: {e}")
    print(f"Код ошибки: {e.error_code}")

try:
    result = process_data(-5)
    print(result)
except MyCustomError as e:
    print(f"Перехвачено собственное исключение: {e}")
    print(f"Код ошибки: {e.error_code}")

try:
    result = process_data(10)
    print(result)
except MyCustomError as e:
    print(f"Перехвачено собственное исключение: {e}")
    print(f"Код ошибки: {e.error_code}")