Ukaz finally

Blok finally se uporablja skupaj s konstrukcijama try in catch za obdelavo izjem. Koda znotraj finally se bo izvedla v vsakem primeru - tako pri uspešnem izvajanju try-bloka kot pri pojavu izjeme.

Sintaksa

phptry {
  // Koda, ki lahko povzroči izjemo
} catch (Exception $e) {
  // Obdelava izjeme
} finally {
  // Koda, ki se bo izvedla v vsakem primeru
}

Primer

Primer z uspešnim izvajanjem kode:

php<?php
try {
  $res = 10 / 2;
  echo "Rezultat: " . $res . "\n";
} catch (Exception $e) {
  echo "Izjema: " . $e->getMessage() . "\n";
} finally {
  echo "To se bo izvedlo vedno\n";
}
?>

Rezultat izvajanja kode:

phpRezultat: 5
To se bo izvedlo vedno

Primer

Primer z obdelavo izjeme:

php<?php
try {
  $res = 10 / 0;
  echo "Rezultat: " . $res . "\n";
} catch (Exception $e) {
  echo "Izjema: " . $e->getMessage() . "\n";
} finally {
  echo "To se bo izvedlo vedno\n";
}
?>

Rezultat izvajanja kode:

phpIzjema: Deljenje z nič
To se bo izvedlo vedno

Primer

Uporaba finally za sprostitev virov:

php<?php
$file = fopen("example.txt", "r");
try {
  // Delo z datoteko
  if ($file) {
    echo "Datoteka uspešno odprta\n";
  }
} catch (Exception $e) {
  echo "Izjema: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "Datoteka zaprta v finally bloku\n";
  }
}
?>

Rezultat izvajanja kode:

phpDatoteka uspešno odprta
Datoteka zaprta v finally bloku

Glejte tudi

  • konstrukcijo try,
    ki se uporablja za obdelavo izjem
  • razred Exception,
    ki je osnovni razred za vse izjeme