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

phptry {
  // 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<?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:

phpResultado: 5
Esto se ejecutará siempre

Ejemplo

Ejemplo con manejo de excepción:

php<?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:

phpExcepción: División por cero
Esto se ejecutará siempre

Ejemplo

Uso de finally para liberar recursos:

php<?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:

phpArchivo abierto exitosamente
Archivo cerrado en el bloque finally

Ver también

  • la construcción try,
    que se utiliza para el manejo de excepciones
  • la clase Exception,
    que es la clase base para todas las excepciones