Команда finally

Блокът finally се използва заедно с конструкциите try и catch за обработка на изключения. Кодът вътре във finally ще се изпълни във всеки случай - както при успешно изпълнение на try-блока, така и при възникване на изключение.

Синтаксис

phptry {
  // Код, който може да причини изключение
} catch (Exception $e) {
  // Обработка на изключението
} finally {
  // Код, който ще се изпълни във всеки случай
}

Пример

Пример с успешно изпълнение на код:

php<?php
try {
  $res = 10 / 2;
  echo "Result: " . $res . "\n";
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  echo "This will always execute\n";
}
?>

Резултат от изпълнението на кода:

phpResult: 5
This will always execute

Пример

Пример с обработка на изключение:

php<?php
try {
  $res = 10 / 0;
  echo "Result: " . $res . "\n";
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  echo "This will always execute\n";
}
?>

Резултат от изпълнението на кода:

phpException: Division by zero
This will always execute

Пример

Използване на finally за освобождаване на ресурси:

php<?php
$file = fopen("example.txt", "r");
try {
  // Работа с файл
  if ($file) {
    echo "File opened successfully\n";
  }
} catch (Exception $e) {
  echo "Exception: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "File closed in finally block\n";
  }
}
?>

Резултат от изпълнението на кода:

phpFile opened successfully
File closed in finally block

Вижте също

  • конструкцията try,
    която се използва за обработка на изключения
  • класът Exception,
    който е базов клас за всички изключения