下面,我的bootstrap.php文件中有一些代码,每当网站中的页面无法解析时,该页面应显示一个漂亮的错误页面。但是,在Bugsnag获取错误信息之前,echo 'Todo: Friendly error page';行一直显示。任何帮助或见识将不胜感激。

/**
 * Register the error handler
 */
$whoops = new \Whoops\Run;
if ($is_prod) {
    $whoops->pushHandler(function($e){
        echo 'Todo: Friendly error page';
    });
    $bugsnag = Bugsnag\Client::make("61a075bcdc8317eab9ed0ab86aada144");
    Bugsnag\Handler::register($bugsnag);
} else {
    $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
}
$whoops->register();

最佳答案

这是因为只有一个错误处理程序可以绑定(bind)到应用程序,并且当前它绑定(bind)到whoops,因此永远不会调用bugsnag。

我建议使用单个错误处理程序,然后从那里调用bugsnag,我们可以这样做。

$whoops = new \Whoops\Run;

if ($is_prod) {
    $bugsnag = Bugsnag\Client::make("61a075bcdc8317eab9ed0ab86aada144");

    $whoops->pushHandler(function($e) use($bugsnag) {
        $bugsnag->notifyException($e);
        echo 'Todo: Friendly error page';
    });
} else {
    $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
}

10-06 13:45