国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

workerman如何全局捕獲異常

augushong

問題描述

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)里

我知道可以在每個回調(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)部捕捉嗎?

1421 1 1
1個回答

walkor 打賞

必須在回調(diào)里try catch

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??