Ответ
Конструкция try/except/else в Python позволяет элегантно обрабатывать исключения, разделяя код, который может вызвать ошибку, от кода, который должен выполниться только при успешном выполнении блока try.
Структура и логика:
try:Блок с кодом, где могут возникнуть исключения.except:Блок(и) для перехвата и обработки конкретных исключений.else:Блок, который выполняется только если вtryне было выброшено ни одного исключения.
Практический пример:
def safe_divide_file(filename):
try:
# Код, который может вызвать несколько типов ошибок
with open(filename, 'r') as file:
numerator, denominator = map(float, file.read().strip().split())
except FileNotFoundError:
print(f"Ошибка: Файл {filename} не найден.")
except ValueError:
print("Ошибка: Файл должен содержать два числа.")
else:
# Этот код выполняется, только если файл прочитан и распарсен без ошибок
# Здесь мы выполняем операцию, которая также может вызвать исключение
result = numerator / denominator
print(f"Результат деления: {result}")
return result
# Блок finally, если он есть, выполнится в любом случае
# Вызов функции
safe_divide_file('data.txt')
Зачем нужен else? Он делает код чище и понятнее, явно отделяя «опасную» операцию (открытие и чтение файла) от последующей логики (деление), которая тоже может упасть, но обрабатывается отдельно. Без else пришлось бы добавлять флаги или помещать код деления в конец блока try, что размывало бы границы обработки ошибок.