Есть такой код:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
set_error_handler ( function ($errno, $errstr, $errfile, $errline )
{
echo $errstr;
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
return true;
});
// shutdown
register_shutdown_function( function(){
echo "END SCRIPT";
});
$a->ee();
Общий смысл такой: все ошибки перехватываемые превращаем в исключения. Для перехвата фатальных ошибок будет использоваться shutdown_function.
На простых тестах всё работает, проблема возникает на ошибках вида $a->ee(); здесь идут подряд две ошибки, сначала
Undefined variable: a которая превращается в exception и следом
Fatal error: Call to a member function ee() on a non-object .
Две странности: во-первых не перехваченное исключение не остановило код в тот же момент, следующее выражение (вызов несуществующего метода) тоже выполнилось. Во-вторых, shutdown_function не вызывается.
Что происходит ?