Il comando finally
Il blocco finally viene utilizzato insieme alle costruzioni try e catch per la gestione delle eccezioni. Il codice all'interno di finally verrà eseguito in ogni caso - sia in caso di esecuzione riuscita del blocco try, sia in caso di generazione di un'eccezione.
Sintassi
try {
// Codice che potrebbe generare un'eccezione
} catch (Exception $e) {
// Gestione dell'eccezione
} finally {
// Codice che verrà eseguito in ogni caso
}
Esempio
Esempio con esecuzione riuscita del codice:
<?php
try {
$res = 10 / 2;
echo "Risultato: " . $res . "\n";
} catch (Exception $e) {
echo "Eccezione: " . $e->getMessage() . "\n";
} finally {
echo "Questo verrà sempre eseguito\n";
}
?>
Risultato dell'esecuzione del codice:
Risultato: 5
Questo verrà sempre eseguito
Esempio
Esempio con gestione di un'eccezione:
<?php
try {
$res = 10 / 0;
echo "Risultato: " . $res . "\n";
} catch (Exception $e) {
echo "Eccezione: " . $e->getMessage() . "\n";
} finally {
echo "Questo verrà sempre eseguito\n";
}
?>
Risultato dell'esecuzione del codice:
Eccezione: Division by zero
Questo verrà sempre eseguito
Esempio
Utilizzo di finally per liberare le risorse:
<?php
$file = fopen("example.txt", "r");
try {
// Lavoro con il file
if ($file) {
echo "File aperto con successo\n";
}
} catch (Exception $e) {
echo "Eccezione: " . $e->getMessage() . "\n";
} finally {
if ($file) {
fclose($file);
echo "File chiuso nel blocco finally\n";
}
}
?>
Risultato dell'esecuzione del codice:
File aperto con successo
File chiuso nel blocco finally