Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про PHP: finally, block, resource, cleanup

В каких ситуациях целесообразно использовать finally?

Вопрос проверяет понимание жизненного цикла выполнения кода при исключениях и умение гарантировать корректное завершение операций.

Короткий ответ

finally используют, когда нужно выполнить код независимо от того, произошло исключение или нет. Чаще всего там освобождают ресурсы: закрывают соединения, файлы, транзакции. Этот блок выполнится даже при return внутри try. Он помогает избежать утечек ресурсов и некорректных состояний.

Длинный ответ

Блок finally нужен не для обработки ошибок, а для гарантированного выполнения завершающих действий.

1) Что такое finally

Определение:
finally — это блок кода, который выполняется всегда после try и catch, независимо от того, было ли выброшено исключение.

2) Типичные сценарии использования

Перед примерами важно понять общий принцип:
finally отвечает за очистку и завершение, а не за логику обработки ошибок.

2.1) Закрытие ресурсов

  • соединения с БД

  • файловые дескрипторы

  • сетевые подключения

try {
    $conn = openConnection();
    // работа с соединением
} finally {
    $conn->close();
}

2.2) Завершение транзакций

try {
    $db->beginTransaction();
    // изменения данных
    $db->commit();
} catch (Throwable $e) {
    $db->rollBack();
    throw $e;
} finally {
    // логирование, метрики, очистка
}

2.3) Гарантированное освобождение состояния

  • сброс флагов

  • возврат временных настроек

  • очистка временных данных

3) Поведение при return

Даже если внутри try есть return, finally всё равно выполнится.

function process() {
    try {
        return 42;
    } finally {
        logAction();
    }
}

4) Когда finally не нужен

  • Нет ресурсов для освобождения

  • Вся логика укладывается в try/catch

  • Код в finally дублирует catch

Краткий вывод

finally стоит использовать всегда, когда нужно гарантированно завершить операцию или освободить ресурсы, независимо от успеха выполнения кода.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • PHP

    PHP

Ключевые слова

#finally

#block

#resource

#cleanup

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.