异常捕获和记录

codeninjia

想问下关于异常捕获的问题。我在守护进程下运行。try 了回调方法,但是发现回调里报了致命的错误但是没有捕获,我在stdoutFile 设置的文件里也没有看到错误。比如缺少扩展之类的。进程直接退出了。没有到catch 里那这类的错误要怎么捕获。
示例代码如下

try{
        $ret = call_user_func_array(array(SERVICE_DIR."\\".$class, $method), $param_array);//回调里有报错但是没有catch住也就没有上报到日志系统里
  }
  catch (Exception $e) {
        // 发送数据给客户端,发生异常,调用失败
        $code = $e->getCode() ? $e->getCode() : 500;
        StatisticClient::report($class, $method, $success, $code, $e, $statistic_address);
        return $connection->send(array('code' => $code, 'msg' => $e->getMessage(), 'data' => $e));
    }
3901 3 0
3个回答

maq

回调里的代码能贴出来么?

  • 暂无评论
maq

PHP 里并不是所有的错误都可以 try-catch,只有 throw 的才可以,所以你的程序要主动检查不符合预期的情形并 throw Exception。如果不是程序逻辑能检查出来的情形,那恐怕就要用 set_error_handler() 这种方法了。

  • codeninjia 2018-02-01

    wokerman本身我看注册了 register_shutdown_function(array("\Workerman\Worker", 'checkErrors'));
    这个方法。我在想是不是可以在这个方便里直接上报错误。

  • codeninjia 2018-02-01

    搜了下别人的回答。wokerman不支持set_exception_handler 这种方式。回调错误。但是你说的set_error_handler 这个支不支持。还要验证一下。

tastyz

使用\Error可以接着报错
try{

}catch (\Error $e){

}

  • 暂无评论
年代过于久远,无法发表回答
🔝