← Назад к вопросам

Как вызвать исключение в Python?

1.6 Junior🔥 241 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как вызвать исключение в Python?

В Python исключения вызываются с помощью оператора raise. Это один из ключевых механизмов обработки ошибок, который позволяет программе сигнализировать об аномальных ситуациях и передавать информацию об ошибке вызывающему коду.

Основной синтаксис

raise ExceptionType("сообщение об ошибке")

Встроенные исключения

В Python существует иерархия встроенных исключений, которые можно вызывать:

# ValueError — неправильное значение
raise ValueError("Введено некорректное значение")

# TypeError — неправильный тип данных
raise TypeError("Ожидается число, получена строка")

# IndexError — индекс вне диапазона
raise IndexError("Индекс выходит за пределы списка")

# KeyError — ключ не найден в словаре
raise KeyError("Запрашиваемый ключ отсутствует")

# ZeroDivisionError — деление на ноль
raise ZeroDivisionError("Деление на ноль невозможно")

# RuntimeError — общая ошибка времени выполнения
raise RuntimeError("Произошла непредвиденная ошибка")

Создание пользовательских исключений

Вы можете создавать собственные классы исключений, наследуя их от встроенного класса Exception или другого исключения:

class CustomError(Exception):
    """Пользовательское исключение"""
    pass

class ValidationError(Exception):
    """Исключение для ошибок валидации"""
    def __init__(self, message, field_name):
        self.message = message
        self.field_name = field_name
        super().__init__(f"Ошибка в поле {field_name}: {message}")

# Вызов
raise ValidationError("Email неверного формата", "email")

Использование в контексте try-except

try:
    age = int(input("Введите возраст: "))
    if age < 0:
        raise ValueError("Возраст не может быть отрицательным")
    print(f"Вам {age} лет")
except ValueError as e:
    print(f"Ошибка: {e}")

Проброс исключений с finally

def process_file(filename):
    file = None
    try:
        file = open(filename, "r")
        # обработка файла
    except FileNotFoundError:
        raise FileNotFoundError(f"Файл {filename} не найден")
    finally:
        if file:
            file.close()

Цепочка исключений (Exception Chaining)

Привязка одного исключения к другому для сохранения информации о контексте ошибки:

try:
    result = 10 / 0
except ZeroDivisionError as e:
    raise RuntimeError("Ошибка при вычислении") from e

Важные практики

  • Используй специфичные исключения — не ловите просто Exception
  • Добавляй информативные сообщения — помогает при отладке
  • Создавай пользовательские исключения — для специфичных ошибок приложения
  • Не подавляй исключения молча — логируй или пробрасывай дальше
  • Используй else и finally — для структурированной обработки ошибок

Исключения — это не просто обработка ошибок, это нормальный управляющий поток в Python, который делает код более надёжным и понятным.

Как вызвать исключение в Python? | PrepBro