function fatal_error_handler() {
if ($error = error_get_last()) {
switch ($error['type']) {
case E_ERROR:
$code = 'FATAL ERROR';
break;
case E_CORE_ERROR:
$code = 'CORE ERROR';
break;
case E_CORE_WARNING:
$code = 'CORE WARNING';
break;
default:
$code = 'UNKNOWN FATAL ERROR';
}
echo 'An error occurred (Test 1): ' . $code . '<br />';
}
echo 'An error occurred (Test 2): ' . $code . '<br />';
}
register_shutdown_function('fatal_error_handler');
我目前正在使用register_shutdown_function编写致命的错误处理程序。只是想知道,register_shutdown_function应该自动运行/执行吗?我一直在测试上面这段代码。我故意放入第二个echo语句来查看它是否自动运行,它实际上打印出第二个echo语句(由于没有致命错误,因此不会打印第一个echo语句。)
答案 0 :(得分:2)
正如其他人所说的那样,无论脚本是否正常完成,无论脚本是否正常完成,都会因为您正在使用此脚本进行错误处理而对其进行正常或异常处理,这对您来说非常有用。
您甚至可以拥有之前创建的所有对象,如静态类等,并且可以按照您的说明输出到浏览器。
答案 1 :(得分:1)
Yes, this is intentional:(强调我的)
在脚本执行完成或调用exit()后,注册要执行的回调。