Komanda finally

Blok finally se koristi zajedno sa konstrukcijama try i catch za obradu izuzetaka. Kod unutar finally će se izvršiti u svakom slučaju - kako pri uspešnom izvršenju try-bloka, tako i pri pojavi izuzetka.

Sintaksa

phptry {
  // Kod koji može da izazove izuzetak
} catch (Exception $e) {
  // Obrada izuzetka
} finally {
  // Kod koji će se izvršiti u svakom slučaju
}

Primer

Primer sa uspešnim izvršenjem koda:

php<?php
try {
  $res = 10 / 2;
  echo "Rezultat: " . $res . "\n";
} catch (Exception $e) {
  echo "Izuzetak: " . $e->getMessage() . "\n";
} finally {
  echo "Ovo će se uvek izvršiti\n";
}
?>

Rezultat izvršenja koda:

phpRezultat: 5
Ovo će se uvek izvršiti

Primer

Primer sa obradom izuzetka:

php<?php
try {
  $res = 10 / 0;
  echo "Rezultat: " . $res . "\n";
} catch (Exception $e) {
  echo "Izuzetak: " . $e->getMessage() . "\n";
} finally {
  echo "Ovo će se uvek izvršiti\n";
}
?>

Rezultat izvršenja koda:

phpIzuzetak: Deljenje sa nulom
Ovo će se uvek izvršiti

Primer

Korišćenje finally za oslobađanje resursa:

php<?php
$file = fopen("primer.txt", "r");
try {
  // Rad sa fajlom
  if ($file) {
    echo "Fajl je uspešno otvoren\n";
  }
} catch (Exception $e) {
  echo "Izuzetak: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "Fajl je zatvoren u finally bloku\n";
  }
}
?>

Rezultat izvršenja koda:

phpFajl je uspešno otvoren
Fajl je zatvoren u finally bloku

Pogledajte takođe

  • konstrukciju try,
    koja se koristi za obradu izuzetaka
  • klasu Exception,
    koji je osnovna klasa za sve izuzetke