Sobes.tech
Назад к вопросам
Junior — Middle
48

Можно ли применять блок try без наличия блока except в Python?

Компании, где спрашивали
АэрофлотАэрофлот

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Да, в Python блок try может использоваться без except, если после него есть finally или else вместе с finally. На практике это нужно, когда важно гарантированно выполнить очистку ресурсов. Если же нужно именно обработать ошибку, тогда except обязателен.

Определение:

try сам по себе не является завершённой конструкцией обработки исключений. После него должен быть хотя бы один из блоков: except для перехвата ошибок или finally для обязательного выполнения кода. Конструкция try без except допустима, если она сопровождается finally, который выполнится независимо от того, была ошибка или нет.

Пример использования:

file = None

try:
    file = open("data.txt", "r")
    content = file.read()
finally:
    if file is not None:
        file.close()

Пояснение кода:

Код не требует отдельного except, потому что здесь задача — не обработать ошибку, а гарантировать закрытие файла.
Если при open() или read() возникнет исключение, выполнение всё равно дойдёт до finally, и файл будет закрыт.
Это типичный шаблон для освобождения ресурсов: файлов, соединений, блокировок.

Ключевые моменты:

  • try без except допустим только в связке с finally или в составе полной конструкции try ... except ... else ... finally.
  • Если нужен перехват и обработка ошибки, без except не обойтись.
  • finally выполняется почти всегда, даже при исключении или return.
  • Такой подход часто используют для освобождения ресурсов.
  • try без except и без finally в Python недопустим.