La sentencia finally
El bloque finally se utiliza junto con las construcciones try y catch para el manejo de excepciones. El código dentro de finally se ejecutará en cualquier caso - tanto si el bloque try se ejecuta con éxito como si se produce una excepción.
Sintaxis
try {
// Código que puede causar una excepción
} catch (Exception $e) {
// Manejo de la excepción
} finally {
// Código que se ejecutará en cualquier caso
}
Ejemplo
Ejemplo con ejecución exitosa del código:
<?php
try {
$res = 10 / 2;
echo "Resultado: " . $res . "\n";
} catch (Exception $e) {
echo "Excepción: " . $e->getMessage() . "\n";
} finally {
echo "Esto se ejecutará siempre\n";
}
?>
Resultado de la ejecución del código:
Resultado: 5
Esto se ejecutará siempre
Ejemplo
Ejemplo con manejo de excepción:
<?php
try {
$res = 10 / 0;
echo "Resultado: " . $res . "\n";
} catch (Exception $e) {
echo "Excepción: " . $e->getMessage() . "\n";
} finally {
echo "Esto se ejecutará siempre\n";
}
?>
Resultado de la ejecución del código:
Excepción: División por cero
Esto se ejecutará siempre
Ejemplo
Uso de finally para liberar recursos:
<?php
$file = fopen("example.txt", "r");
try {
// Trabajo con el archivo
if ($file) {
echo "Archivo abierto exitosamente\n";
}
} catch (Exception $e) {
echo "Excepción: " . $e->getMessage() . "\n";
} finally {
if ($file) {
fclose($file);
echo "Archivo cerrado en el bloque finally\n";
}
}
?>
Resultado de la ejecución del código:
Archivo abierto exitosamente
Archivo cerrado en el bloque finally