Manejador de excepción no capturado en PHP 7

PHP proporciona un mecanismo en forma de una función set_exception_handler que nos permite definir una función de controlador personalizado para todos los objetos no capturados, incluidas las excepciones.
La función set_exception_handler acepta un único parámetro invocable, ya sea un nombre de función pasado como cadena o una función anónima completa.

Echemos un vistazo al siguiente nombre de función pasado como ejemplo de cadena:

<?php
function throwableHandler(Throwable $t)
{
echo 'Throwable Handler: ' . $t->getMessage();
}
set_exception_handler('throwableHandler');
echo 'start';
throw new Exception('Ups!');
echo 'end';

Echemos un vistazo al siguiente ejemplo de función anónima:

<?php
set_exception_handler(function (Throwable $t) {
echo 'Throwable Handler: ' . $t->getMessage();
});
echo 'start';
throw new Exception('Ups!');
echo 'end';

Ambos ejemplos de código hacen lo mismo, no hay diferencia para ellos. Aparte del segundo ejemplo, que es más agradable desde el punto de vista ascético, ya que no hay necesidad de definir una función separada como throwableHandler() que solo se utiliza en un lugar. Lo importante a tener en cuenta aquí es que, a diferencia del bloque try…catch, la llamada a la función de controlador es lo último que ejecuta nuestra aplicación, lo que, en este caso, significa que nunca veremos la cadena final en la pantalla.

Comparte