Comanda finally

Blocul finally este utilizat împreună cu construcțiile try și catch pentru gestionarea excepțiilor. Codul din interiorul lui finally se va executa în orice caz - atât la executarea cu succes a blocului try, cât și la apariția unei excepții.

Sintaxă

phptry {
  // Cod care poate provoca o excepție
} catch (Exception $e) {
  // Gestionarea excepției
} finally {
  // Cod care se va executa în orice caz
}

Exemplu

Exemplu cu executare cu succes a codului:

php<?php
try {
  $res = 10 / 2;
  echo "Rezultat: " . $res . "\n";
} catch (Exception $e) {
  echo "Excepție: " . $e->getMessage() . "\n";
} finally {
  echo "Acesta se va executa întotdeauna\n";
}
?>

Rezultatul executării codului:

phpRezultat: 5
Acesta se va executa întotdeauna

Exemplu

Exemplu cu gestionarea unei excepții:

php<?php
try {
  $res = 10 / 0;
  echo "Rezultat: " . $res . "\n";
} catch (Exception $e) {
  echo "Excepție: " . $e->getMessage() . "\n";
} finally {
  echo "Acesta se va executa întotdeauna\n";
}
?>

Rezultatul executării codului:

phpExcepție: Împărțire la zero
Acesta se va executa întotdeauna

Exemplu

Utilizarea lui finally pentru eliberarea resurselor:

php<?php
$file = fopen("exemplu.txt", "r");
try {
  // Lucrul cu fișierul
  if ($file) {
    echo "Fișier deschis cu succes\n";
  }
} catch (Exception $e) {
  echo "Excepție: " . $e->getMessage() . "\n";
} finally {
  if ($file) {
    fclose($file);
    echo "Fișier închis în blocul finally\n";
  }
}
?>

Rezultatul executării codului:

phpFișier deschis cu succes
Fișier închis în blocul finally

Vezi și

  • constructia try,
    care este utilizată pentru gestionarea excepțiilor
  • clasa Exception,
    care este clasa de bază pentru toate excepțiile