require的php脚本内有异常无法捕获

大致情况是我通过socket接收到web的请求后,将请求的资源通过require的方式返回给web。可是如果在reqire的页面内出现异常的话,就会报无法捕获的异常。通过try/catch也无法捕获,注册异常捕获函数也不行。不知道大家有没有碰到过这个问题,是如何解决的呢?

代码片段如下:

try {
    ob_start();
    // sourcePath是请求的资源,当然肯定是存在的。
    //异常也就是出现在这个请求的资源里面。
    require $sourcePath;
    $response = ob_get_contents();
    ob_clean();
} catch (Exception $e) {
    $this->logger->error($e);
    $response = $e->getMessage();
}

比方说:请求的资源是tail.php,是一个查看日志内容的页面,假设内容如下:

// 并没有getLogfile这个方法,于是这里就会报错。
$logfile = $job->getLogfile();
// ...
最佳答案

换成 Throwable 就可以

3年前 评论
so_easy (楼主) 3年前
讨论数量: 2

建议把Exception换成Throwable 就能捕获了

3年前 评论
so_easy (楼主) 3年前

换成 Throwable 就可以

3年前 评论
so_easy (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!