finally выполняется всегда, независимо от того, было ли исключение, был ли return или throw в try/catch:
function readFile(string $path): string {
$file = fopen($path, 'r');
try {
$content = fread($file, filesize($path));
return $content;
} catch (Exception $e) {
return '';
} finally {
fclose($file); // выполнится даже после return!
}
}Используется для: закрытия файлов/соединений, освобождения блокировок, логирования. Если finally содержит return, он перезаписывает return из try/catch (избегайте этого).