Příkaz finally

Blok finally se používá společně s konstrukcemi try a catch pro zpracování výjimek. Kód uvnitř finally se vykoná v každém případě - jak při úspěšném provedení try-bloku, tak při vzniku výjimky.

Syntaxe

phptry {
  // Kód, který může vyvolat výjimku
} catch (Exception $e) {
  // Zpracování výjimky
} finally {
  // Kód, který se vykoná v každém případě
}

Příklad

Příklad s úspěšným provedením kódu:

php<?php
try {
  $res = 10 / 2;
  echo "Výsledek: " . $res . "\n";
} catch (Exception $e) {
  echo "Výjimka: " . $e->getMessage() . "\n";
} finally {
  echo "Toto se vždy provede\n";
}
?>

Výsledek provedení kódu:

phpVýsledek: 5
Toto se vždy provede

Příklad

Příklad se zpracováním výjimky:

php<?php
try {
  $res = 10 / 0;
  echo "Výsledek: " . $res . "\n";
} catch (Exception $e) {
  echo "Výjimka: " . $e->getMessage() . "\n";
} finally {
  echo "Toto se vždy provede\n";
}
?>

Výsledek provedení kódu:

phpVýjimka: Division by zero
Toto se vždy provede

Příklad

Použití finally pro uvolnění prostředků:

php<?php
$file = fopen("example.txt", "r");
try {
  // Práce se souborem
  if ($file) {
    echo "Soubor úspěšně otevřen\n";
  }
} catch (Exception $e) {
  echo "Výjimka: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "Soubor uzavřen v bloku finally\n";
  }
}
?>

Výsledek provedení kódu:

phpSoubor úspěšně otevřen
Soubor uzavřen v bloku finally

Viz také

  • konstrukci try,
    která se používá pro zpracování výjimek
  • třídu Exception,
    která je základní třídou pro všechny výjimky