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 aoff
.
- 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.