想問下關(guān)于異常捕獲的問題。我在守護進程下運行。try 了回調(diào)方法,但是發(fā)現(xiàn)回調(diào)里報了致命的錯誤但是沒有捕獲,我在stdoutFile 設(shè)置的文件里也沒有看到錯誤。比如缺少擴展之類的。進程直接退出了。沒有到catch 里那這類的錯誤要怎么捕獲。
示例代碼如下
try{
$ret = call_user_func_array(array(SERVICE_DIR."\\".$class, $method), $param_array);//回調(diào)里有報錯但是沒有catch住也就沒有上報到日志系統(tǒng)里
}
catch (Exception $e) {
// 發(fā)送數(shù)據(jù)給客戶端,發(fā)生異常,調(diào)用失敗
$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));
}
PHP 里并不是所有的錯誤都可以 try-catch,只有 throw 的才可以,所以你的程序要主動檢查不符合預(yù)期的情形并 throw Exception。如果不是程序邏輯能檢查出來的情形,那恐怕就要用 set_error_handler() 這種方法了。
wokerman本身我看注冊了 register_shutdown_function(array("\Workerman\Worker", 'checkErrors'));
這個方法。我在想是不是可以在這個方便里直接上報錯誤。
搜了下別人的回答。wokerman不支持set_exception_handler 這種方式?;卣{(diào)錯誤。但是你說的set_error_handler 這個支不支持。還要驗證一下。