Manejo de errores en PHP
Ahora que empiezo a cogerle el gustillo a Java, una de las cosas que veo muy útil y que hasta ahora no había utilizado nunca en PHP es el manejo de errores, por que.. ¿Quien ha dicho que en PHP no se pueda?
En la página oficial de PHP tenemos un gran artículo donde exponen todas las configuraciones posibles que nos aporta este lenguaje para gestionar los posibles fallos, aunque voy a hacer un resumen de lo que a mi parecer es lo más útil.
Manejador de errores
Lo primero que podríamos hacer sería crearnos nuestro propio manejador de errores, sustituyendo al que viene por defecto en PHP.
Un manejador, no es más que una función que recibe como parámetros los eventos que han provocado un fallo en la aplicación.
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case E_USER_ERROR:
echo "<b>ERROR</b> [$errno] $errstr<br />\n";
echo " Error en linea $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Abortando...<br />\n";
exit(1);
break;
case E_USER_WARNING:
echo "<b>Warning</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
echo "<b>Notice</b> [$errno] $errstr<br />\n";
break;
case E_ERROR:
echo "Error fatal...<br>";
break;
default:
echo "Error desconocido, valor: [$errno] $errstr<br />\n";
break;
}
return true;
}
Con este manejador, podremos controlar los fallos que se producen en nuestra aplicación y obrar en consecuencia. Es obligado decir que no podremos capturar todos los fallos posibles y que si no somos un poco selectivos es posible que muestre demasiados errores.
Los errores más importantes que podemos encontrarnos en PHP versión 5* son:
- E_ERROR : Errores fatales en tiempo de ejecución
- E_WARNING: Advertencia en tiempo de ejecución (no son fatales)
- E_PARSE: Errores fatales en tiempo de compilación
- E_NOTICE: Avisos en tiempo de ejecución (menos importantes que las advertencias)
Si necesitásemos controlar alguno que no fuera ninguno de estos, utilizarías el default de nuestro manejador para obtener su identificador de error y lo controlaríamos añadiendo otro case al bucle.
Para que entre en funcionamiento nuestro manejador tendremos que decírselo al servidor, para ello utilizaremos la función set_error_handler() a la cual le pasaremos como parámetro el nombre de nuestra función que hará de manejador de errores.
set_error_handler('myErrorHandler');
Si aparte de todo esto, queremos evitar que salga por pantalla cualquier error propio de php, bastará con colocar en los archivos correspondientes la instrucción
error_reporting(0);
Excepciones en PHP
Para una buena programación sería conveniente crearnos nuestras propias excepciones, y utilizarlas durante toda la aplicación.
Una excepción es como una clase normal, y dentro de ella cada uno puede añadir , borrar o modificar a su gusto.
Para invocarla seguimos la misma sintaxis que cualquier excepción en java:
try {
if(!@include('/path/to/fichero.php')) {
throw new Exception('Error al cargar el fichero');
}
}
catch(Exception $e) {
print $e->getMessage();
}
Con un poco de análisis podemos gestionar los errores de nuestra aplicación de forma eficiente y muy rápida.
Comparte este artículo
Trackbacks / Pingbacks
Pingback de Evitar mostrar errores en php
1 Comentario (1 externos)
Deja un comentario