featured image

Uno de los problemas que surge cuando se usa PHP, es que muchas veces, se programa pensando en orientación a objetos y, de repente... un Fatal Error, algo tan ligado a la programación estructurada o incluso spaguetti nos ronda en un esquema que intentamos que sea lo más POO (u OOP) posible.

Después de realizar una pequeña búsqueda por Internet, he visto que, en la propia página de PHP, ya tienen medio resuelto el problema y, funciona bastante bien... según leo en un ejemplo de :

<?php
function exception_error_handler($errno, $errstr, $errfile, $errline) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler", E_USER_ERROR);

/* Trigger exception */
strpos();

Si lanzamos la ejecución del código, veremos que ya no se sucede el típico Fatal Error, sino una excepción no capturada, con lo que, si envolviésemos el código strpos con try ... catch, obtendríamos que el programa ya no deja de funcionar.

Hay que tener en cuenta de que PHP no tiene solo errores, sino también noticas (NOTICE), avisos de elementos en desuso (DEPRECATED) y avisos (WARNING), que podría capturarse si no indicamos el parámetro E_USER_ERROR como segundo parámetro de set_error_handler.

¿Para cuándo lo incluirán este cómo como por defecto en la distribución estándar de PHP?