今天因为接触了一个框架,各种try,catch。将致命错误和语法错误都抛出500。try,catch是没法捕捉到错误的。然后就用了下register_shutdown_function这个方法,很好用
这个方法的原理就是在PHP进程结束前会去调用它一次。所以配合error_get_last(这个方法顾名思义,返回最后一次错误)可以很好的捕获致命错误
register_shutdown_function('shutdown_function');
try
{
$a = new A();//这里会报致命错误
echo 5/0;
}
catch(Exception $e)
{
echo '异常捕获';
print $e->getMessage();
}
function shutdown_function()
{
echo '捕获错误';
$e = error_get_last();
print_r($e);
}
这里我开始犯了一个错误就是把register_shutdown_function写到最后去了。因为PHP代码是从头到尾开始执行,还没执行到你的方法时就被致命错误中断进程了,所以把他放到开始