Что такое модификатор finally в PHP?

«Что такое модификатор finally в PHP?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В PHP finally — это блок, который выполняется после блоков try и catch независимо от того, было выброшено исключение или нет. Его основное назначение — гарантированное освобождение ресурсов (закрытие файлов, соединений с БД, сброс буферов).

Ключевые особенности:

  • Выполняется даже при использовании return, break или continue внутри try/catch.
  • Если исключение выбрасывается в finally, оно переопределит любое исключение, выброшенное ранее в try или catch.

Пример с файлом:

try {
    $file = fopen('data.txt', 'r');
    if (!$file) {
        throw new RuntimeException('File opening failed');
    }
    // Работа с файлом
    $content = fread($file, 1024);
    echo $content;
} catch (RuntimeException $e) {
    error_log('Error: ' . $e->getMessage());
} finally {
    // Этот код выполнится всегда
    if (isset($file) && is_resource($file)) {
        fclose($file);
        echo 'File handle closed.';
    }
}

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