0
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 语句没有打印,因为没有致命错误)。

4

2 回答 2

2

正如其他人所说,这将在关闭时运行,无论脚本是正常完成还是由于您意识到的错误而异常完成,因为您正在使用它进行错误处理,这有点用处。

您甚至将拥有您之前创建的所有对象,例如静态类等,并且可以按照您的说明输出到浏览器。

于 2012-08-25T19:59:34.363 回答
1

是的,这是故意的:(强调我的)

在脚本执行完成或调用 exit()后注册要执行的回调。

于 2012-08-25T19:55:40.387 回答