Saltar al contenido principal

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 de https://www.php.net/manual/es/errorfunc.constants.php

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:

Funciones para la gestión de errores
<?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/>";
}
}
Salida por consola
Error de tipo no especificado: Undefined variable: dividendo.
Error de tipo no especificado: Undefined variable: divisor.
Error de tipo Warning: Division by zero.