我们软件的入口点(前端控制器)包含在一个 try catch 块中,该块捕获异常,然后包含一个 PHP 文件以显示友好的错误页面,并通过电子邮件向我们发送有关异常的信息。这项工作完美无缺,但是它错过了仅显示 HTTP 500 响应的 PHP 致命错误。我试图以与异常相同的方式捕获这些错误。
目前,我们在应用程序的入口点中有这个:
try {
// Register a shutdown handler for fatal errors
register_shutdown_function(function() {
$error = error_get_last();
// Did this request throw an error that wasn't handled?
if ($error !== null) {
throw new Exception('PHP fatal error!');
}
});
// ...normal front controller stuff
} catch (Exception $e) {
// show fancy error screen with debug information
include 'themes/error/500.php';
}
在这里,当 PHP 抛出一个致命错误时,我抛出了一个异常,希望它能被正常的异常处理过程处理。但是,异常永远不会被捕获:
Fatal error: Uncaught exception 'Exception' with message 'PHP fatal error!'
我怎样才能在这里实现我想做的事情?