Что такое конструкция try/except/else в Python?

«Что такое конструкция try/except/else в Python?» — вопрос из категории Python, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Конструкция try/except/else в Python позволяет элегантно обрабатывать исключения, разделяя код, который может вызвать ошибку, от кода, который должен выполниться только при успешном выполнении блока try.

Структура и логика:

  1. try: Блок с кодом, где могут возникнуть исключения.
  2. except: Блок(и) для перехвата и обработки конкретных исключений.
  3. 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, что размывало бы границы обработки ошибок.