Комментарии (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, который делает код более надёжным и понятным.