Manejo de errores en PHP

PHP tiene soporte integrado para tres niveles de gravedad de errores:
E_NOTICE : Avisos en tiempo de ejecución. Indican que el script encontró algo que podría señalar un error, pero que también podría ocurrir en el curso normal al ejecutar un script.
E_WARNING: Advertencias en tiempo de ejecución (errores no fatales). La ejecución del script no se interrumpe.
E_ERROR : errores que no se pueden recuperar, tales como un problema de asignación de memoria. La ejecución del script se interrumpe.

El usuario puede generar sus propios errores dentro de un script con la función trigger_error. Existen tres tipos de errores que pueden ser activados por el usuario, y tienen una semántica idéntica a los errores que acabamos de mencionar:

E_USER_NOTICE
E_USER_WARNING
E_USER_ERROR

Por ejemplo:

 if ($divisor == 0) {
    trigger_error("No se puede dividir por cero", E_USER_ERROR);
}

Cuando se produce un error tenemos 4 opciones:

Mostrar los errores.
Registrarlos.
Ignorarlos.
Actuar sobre ellos.

Mostrar los errores.

Cuando se opta por mostrar los errores, un error se envía a la salida estándar, que en el caso de una página web significa que se envía al navegador. Se puede cambiar esta configuración y desactivarlo  a través de la configuración de php.ini:
display_errors = Off

Registrar errores:

PHP  configura el registro de errores en archivo en la configuración de php.ini:
log_errors = On
error_log = / ruta / al / archivo
error_log = syslog
El registro proporciona un rastro auditable de los errores que suceden.
Además de los errores registrados a partir de los errores del sistema o por medio de trigger_error (), de forma manual puede generar un mensaje de registro de error con :
error_log («Esto es un error definido por el usuario»);

Ignorar errores

PHP soporta un operador de control de errores: el signo de arroba (@). Cuando se antepone a una expresión en PHP, cualquier mensaje de error que pueden ser generado por esa expresión será ignorado.

$value = @$cache[$key];
// no producirá una anotación si el índice $key no existe.

El operador @ trabaja sólo sobre expresiones: si se puede tomar el valor de algo, entonces se le puede anteponer el operador @.
Actuar sobre los errores

Se puede usar   set_error_handler ()  para definir una función  propia de manejar los errores en tiempo de ejecución, por ejemplo en aplicaciones en las que se necesita hacer una limpieza de datos/archivos. Cuando se usa esta función, se ignorará el gestor interno de errores de php. Para forzar a que esto no ocurra, la función definida en set_error_hendler debe devolver FALSE.