workerman應(yīng)該如何捕獲回調(diào)中的異常呢?除了在每個回調(diào)中使用try catch的寫法,有沒有全局的寫法,而且還不能影響進程自動重啟。
define('GLOBAL_START', 1);
foreach (glob(app()->getBasePath() . '/worker/' . $this->commandName . '/start*.php') as $start_file) {
require_once $start_file;
}
Worker::$pidFile = app()->getBasePath() . '/worker/' . $this->commandName . '/workerman.pid';
Worker::runAll();
面對這樣的基本代碼,應(yīng)該如何寫呢?
我知道可以在每個回調(diào)中寫上try catch,但這樣太麻煩了,也不太好統(tǒng)一封裝管理。
$woker->onWorkerStart = function(){
try{
}catch{
}
};
Worker::runAll
外面因為加載的所有代碼都是在runAll運行的,所以直接把runAll包裹起來就行了,是嗎?
try {
Worker::runAll();
} catch (\Throwable $th) {
Log::error($th);
throw $th;
}
然后再把原有的異常拋出,就能實現(xiàn)原來的自動重啟
根據(jù)我看到的代碼,所有的回調(diào)方法都被捕捉(Exception和Error),除非拋出其他類型才能被更外層的異常捕獲到。
難道只能在回調(diào)內(nèi)部捕捉嗎?