Está en la página 1de 4

Tipos de errores en PHP

Todos cometemos errores en un momento u otro, es imposible no hacerlo. Lo


importante es saber solucionarlos, y para solucionarlos lo primero que hay que
hacer es saber que significan los mensajes de error. En este artículo veremos
los tipos de error que se pueden dar en PHP y que implicaciones tienen.
Clasificación de los errores en PHP
Los errores en PHP se clasifican en tres grandes grupos: Fatal error, Warning y
Notice.

1. Fatal error
Los errores tipo Fatal error (error fatal o crítico) son errores que pueden
comprometer seriamente el funcionamiento del programa y por ello, para
prevenir males mayores, se aborta la ejecución y el programa deja de
funcionar por completo. Es el nivel de error más alto.
Ejemplos comunes de este tipo de error son intentar ejecutar una función que
no ha sido definida (Fatal error undefined function) o intentar inicializar un
objecto de una clase que no exsite (Fatal error class not found). Por ejemplo:

<?php
function unaFuncion() {
return true;
}
//La siguiente funcion no existe y se genera un error Fatal
otraFuncion();
?>

Por defecto, cualquier instalación de PHP tiene activado el reporte de errores


fatales y, dada su importancia, se recomienda tenerlos activados incluso en
servidores en producción.
Dependiendo de dónde se genere el error, se pueden distinguir varios tipos de
Fatal error que se identifican con las siguientes constantes:
 E_ERROR: error crítico generado en tiempo de ejecución. Son
generados por el motor intérprete de PHP.
 E_CORE_ERROR: error crítico que ocurre durante el arranque inicial de
PHP. Son generados por el core de PHP.
 E_COMPILE_ERROR: error crítico que ocurre en tiempo de compilación
y son generados por el Zend Engine.
 E_USER_ERROR: error crítico generado por la función trigger_error(),
utilizado por el desarrollador para generar errores fatales
personalizados.
 E_RECOVERABLE_ERROR: es un error crítico recuperable, un error
potencialmente peligroso pero que no deja al programa en un estado
inestable. Lo importante de este tipo de errores es que pueden ser
capturados si se ha definido un gestor de
errores (set_error_handler()) y aquí el programador puede decidir que
hacer, si seguir con la ejecución o no. Si no se ha definido un gestor de
errores, los E_RECOVERABLE_ERROR se tratarán como E_ERROR y
se abortará el programa.

2. Warning
Los errores tipo Warnings (Advertencia) son errores menos severos que los
errores fatales y no suponen la terminación del programa. Esto no quiere
decir que no puedan ser graves. El programa sigue su curso pero puede no
funcionar correctamente o ser la causa de que más adelante se produzcan
erorres más graves.
Por ejemplo, intentar incluir un archivo mediante include() con una ruta errónea:

<?php
//Genera un error tipo Warning
include('/ruta/hacia/un/archivo/inexistente.php');
?>

Si se utiliza require() en lugar de include(), el error generado es tipo Fatal:

<?php
//Genera un error tipo Fatal error
require('/ruta/hacia/un/archivo/inexistente.php');
?>

Una instalación PHP estándar tiene activado los errores tipo Warning y
deberían estar activados siempre en entornos de desarrollo.
Al igual que los errores Fatales, los Warnings se pueden clasificar en función
de dónde son generados:
 E_WARNING: generados en tiempo de ejecución.
 E_CORE_WARNING: generados por el núcleo de PHP durante el
arranque inicial.
 E_COMPILE_WARNING: generados en tiempo de compilación por Zend
Engine.
 E_USER_WARNING: generado por la función trigger_error().

3. Notice
Los errores tipo Notice (Aviso) son los errores de menor nivel de gravedad.
Señalan la presencia de un posible error pero que podrían ocurrir también de
forma normal en la ejecución del programa. La aparición de errores Notice no
supone la terminación del programa y, aunque no suelen ser fuente de
problemas serios, pueden hacer que el programa no funcione exactamente
como deseamos.
Puede que el error Notice más común sea la referencia a variables no
definidas:

<?php
$name = "Manolo";
//$nombre es una variable que no ha sido definida antes de su uso. Su valor es
NULL.
echo 'Tu nombre es ' . $nombre;
?>

Dada su relativa baja gravedad, al instalar PHP los errores


tipo Notice vienen desactivados por defecto pero se recomienda activarlos
durante el desarrollo pues, aunque sean leves, no dejan de ser errores que
pueden hacer que nuestro programa no funcione exactamente como habíamos
diseñado o que no sea compatible con futuras versiones de PHP.
Según dónde se generen, los errores Notice pueden ser:
 E_NOTICE: generados en tiempo de ejecución.
 E_USER_NOTICE: generados por la función trigger_error().
 E_STRICT: si se habilita, PHP generará avisos en tiempo de ejecución
sugiriendo cambios para que el código se ajuste de forma estricta a los
estándares PHP, lo que aumentará la compatibilidad del código con
futuras versiones de PHP.
 E_DEPRECATED: si se habilita, PHP generará avisos en tiempo de
ejecución indicando partes de código utilizado que dejará de funcionar
en futuras versiones de PHP.
Durante el arranque inicial de PHP o en la compilación por el motor Zend nunca
se generan errores tipo Notice.

4. Parse
Los erres tipo Parse (Analizar) son errores del analizador del núcleo de PHP
y suponen la terminación del programa.
Los errores del analizador más comunes son errores de sintaxis. Por ejemplo:

<?php
//Falta el ")" en la definición de la función, generará un Parse syntax error
function myFunction( {
$name = "Manolo";
return $name;
}
?>

También podría gustarte