Команда finally

Блок finally се користи заједно са конструкцијама try и catch за руковање изузецима. Код унутар finally ће се извршити у сваком случају - како при успешном извршавању try-блока, тако и при настанку изузетка.

Синтакса

phptry {
  // Код који може изазвати изузетак
} catch (Exception $e) {
  // Руковање изузетком
} finally {
  // Код који ће се извршити у сваком случају
}

Пример

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

php<?php
try {
  $res = 10 / 2;
  echo "Резултат: " . $res . "\n";
} catch (Exception $e) {
  echo "Изузетак: " . $e->getMessage() . "\n";
} finally {
  echo "Ово ће се увек извршити\n";
}
?>

Резултат извршавања кода:

phpРезултат: 5
Ово ће се увек извршити

Пример

Пример са руковањем изузетком:

php<?php
try {
  $res = 10 / 0;
  echo "Резултат: " . $res . "\n";
} catch (Exception $e) {
  echo "Изузетак: " . $e->getMessage() . "\n";
} finally {
  echo "Ово ће се увек извршити\n";
}
?>

Резултат извршавања кода:

phpИзузетак: Дељење са нулом
Ово ће се увек извршити

Пример

Коришћење finally за ослобађање ресурса:

php<?php
$file = fopen("example.txt", "r");
try {
  // Рад са фајлом
  if ($file) {
    echo "Фајл је успешно отворен\n";
  }
} catch (Exception $e) {
  echo "Изузетак: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "Фајл је затворен у finally блоку\n";
  }
}
?>

Резултат извршавања кода:

phpФајл је успешно отворен
Фајл је затворен у finally блоку

Види такође

  • конструкцију try,
    која се користи за руковање изузецима
  • класу Exception,
    која је основна класа за све изузетке