Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Механизм работы try-except-else
Блок else в конструкции try-except-else выполняется только если в блоке try НЕ произошло никакого исключения. Это важный, но часто забываемый механизм.
Когда else выполняется и не выполняется
ВЫПОЛНЯЕТСЯ else если:
- Весь код в
tryвыполнился успешно без ошибок - Никакой
exceptне сработал
НЕ выполняется else если:
- Произошло исключение (даже если оно было обработано в
except) - Возникла ошибка типа
KeyboardInterruptилиSystemExit
# Пример 1: else выполняется
try:
x = 10 / 2
print("Вычисление прошло успешно")
except ZeroDivisionError:
print("Ошибка деления на ноль!")
else:
print("Результат:", x) # ЭТО ВЫПОЛНИТСЯ
# Output: Результат: 5.0
# Пример 2: else НЕ выполняется
try:
x = 10 / 0
except ZeroDivisionError:
print("Ошибка деления на ноль!")
else:
print("Результат:", x) # НЕ ВЫПОЛНИТСЯ
# Output: Ошибка деления на ноль!
Практические примеры использования
Работа с файлами:
try:
with open("data.txt", "r") as f:
data = f.read()
except FileNotFoundError:
print("Файл не найден")
else:
lines = data.split("\\n")
print(f"Прочитано {len(lines)} строк")
Парсинг JSON:
import json
try:
json_data = json.loads(user_input)
except json.JSONDecodeError:
print("Некорректный JSON")
else:
user_id = json_data.get("user_id")
print(f"Пользователь {user_id}")
Запросы к API:
import requests
try:
response = requests.get("https://api.example.com/data", timeout=5)
response.raise_for_status()
except requests.HTTPError:
print("HTTP ошибка")
else:
data = response.json()
print(f"Получено {len(data)} записей")
Когда использовать else?
- Успешный путь с дополнительной логикой — код else только для успешных случаев
- Чистота кода — разделяет обработку ошибок от основной логики
- Несколько try-except блоков подряд — структурирует код
Отличие от finally
- else — выполняется только если НЕТ исключения
- finally — выполняется ВСЕГДА
try:
x = 10 / 2
except ZeroDivisionError:
print("Ошибка!")
else:
print(f"else: Результат {x}") # выполнится
finally:
print("finally: Очистка") # выполнится ВСЕГДА