Ответ
В 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-операций, чтобы избежать утечек ресурсов при любом сценарии выполнения.