Cannot redeclare - неуловимая фатальная ошибка в PHP

Вот такая ситуация. Чем поймать?

test.php

<?

ini_set('display_errors', 1);

set_error_handler('error_handler', E_ALL );

include('functions.php');

try {

include('functions.php');

}
catch ( Exception $e ){

echo 'exception';

}

function error_handler( $errno, $errstr, $errfile, $errline, $errcontext ){
echo 'error handler';
}

?>

functions.php

<?

function test(){

}

?>

В общем ничем не ловится.

Fatal error: Cannot redeclare test() (previously declared in /var/www/site/functions.php:5) in /var/www/site/functions.php on line 5

Копаться в сишных исходниках PHP нет желания, поэтому обратился к разработчикам языка и они помогли с решением.

Официальный ответ здесь:

We throw Error in PHP 7 for most things. For everything else, it's really fatal and you only will be able to do cleanup in a register_shutdown_function() for example.

Решение: использовать register_shutdown_function().

register_shutdown_function('my_register_shutdown_function');

function my_register_shutdown_function(){

$error = error_get_last();

if( $error !== null ){

$arr = [
E_ERROR,
E_CORE_ERROR,
E_USER_ERROR,
E_COMPILE_ERROR,
E_RECOVERABLE_ERROR,
E_PARSE
];

if( in_array( $error['type'], $arr, true ) == true ){

// $traces = debug_backtrace();
// print_r($traces);
// print_r($error);

// Показать стилизованную страницу Service Temporarily Unavailable.
require_once('http_pages/503.php');

}


}

}