← Назад к вопросам
Как вызвать ошибку при не прохождении проверки?
2.0 Middle🔥 111 комментариев
#Soft Skills
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Исключения в Python
Основной способ сигнализировать об ошибке при неудачной проверке — использование исключений (exceptions). Это ключевой механизм обработки ошибок в Python.
Базовый подход с raise
def validate_age(age):
if age < 0:
raise ValueError("Возраст не может быть отрицательным")
if age > 150:
raise ValueError("Возраст должен быть реалистичным")
return age
Когда условие не пройдено, используется raise для выброса исключения. Тип исключения указывает на характер ошибки.
Стандартные встроенные исключения
- ValueError — переданное значение недопустимо
- TypeError — неверный тип данных
- AttributeError — атрибут не существует
- KeyError — ключ не найден в словаре
- IndexError — индекс выходит за границы
- ZeroDivisionError — деление на ноль
Пользовательские исключения
class ValidationError(Exception):
"""Исключение для ошибок валидации"""
pass
class InvalidEmailError(ValidationError):
"""Исключение для ошибок email"""
pass
def validate_email(email):
if "@" not in email:
raise InvalidEmailError(f"Некорректный email: {email}")
return email
Обработка исключений
try:
age = validate_age(-5)
except ValueError as e:
print(f"Ошибка валидации: {e}")
except Exception as e:
print(f"Неожиданная ошибка: {e}")
finally:
print("Проверка завершена")
Практические примеры валидации
def divide(a, b):
if b == 0:
raise ZeroDivisionError("Деление на ноль запрещено")
return a / b
def process_list(items):
if not isinstance(items, list):
raise TypeError("Ожидается список")
if len(items) == 0:
raise ValueError("Список не может быть пустым")
return items
Лучшие практики
Используй специфичные исключения — помогает ловить конкретные ошибки. Предоставляй информативные сообщения — облегчает отладку. Иерархия исключений — создавай свои, унаследованные от базовых. Не подавляй исключения — обрабатывай или перебрасывай дальше.