Saltar a contenido

Gestión de Errores

PHP clasifica los errores que ocurren en diferentes niveles. Cada nivel se identifica con una constante. Por ejemplo:

  • E_ERROR: errores fatales, no recuperables. Se interrumpe el script.
  • E_WARNING: advertencias en tiempo de ejecución. El script no se interrumpe.
  • E_NOTICE: avisos en tiempo de ejecución.

Podéis comprobar el listado completo de constantes.

Para la configuración de los errores podemos hacerlo de dos formas:

  • A nivel de php.ini:
    • error_reporting: indica los niveles de errores a notificar.
      • error_reporting = E_ALL & ~E_NOTICE: todos los errores menos los avisos en tiempo de ejecución.
    • display_errors: indica si mostrar o no los errores por pantalla. En entornos de producción es común ponerlo a off.
  • mediante código con las siguientes funciones:
    • error_reporting(codigo): controla qué errores notificar.
    • set_error_handler(nombreManejador): indica que función se invocará cada vez que se encuentre un error. El manejador recibe como parámetros el nivel del error y el mensaje.

A continuación tenemos un ejemplo mediante código:

ejemploerrores.php
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
$resultado = $dividendo / $divisor;

error_reporting(E_ALL & ~E_NOTICE);
set_error_handler("miManejadorErrores");
$resultado = $dividendo / $divisor;
restore_error_handler(); // vuelve al anterior

function miManejadorErrores($nivel, $mensaje) {
    switch($nivel) {
        case E_WARNING:
            echo "<strong>Warning</strong>: $mensaje.<br/>";
            break;
        default:
            echo "Error de tipo no especificado: $mensaje.<br/>";
    }
}
Error de tipo no especificado: Undefined variable: dividendo.
Error de tipo no especificado: Undefined variable: divisor.
Error de tipo Warning: Division by zero.