在協(xié)程編程中可直接使用try/catch處理異常。但必須在協(xié)程內(nèi)捕獲,不得跨協(xié)程捕獲異常。
不僅是應(yīng)用層throw的Exception,底層的一些錯(cuò)誤也是可以被捕獲的,如function、class、method不存在
錯(cuò)誤
下面的代碼中,try/catch和throw在不同的協(xié)程中,協(xié)程內(nèi)無(wú)法捕獲到此異常。當(dāng)協(xié)程退出時(shí),發(fā)現(xiàn)有未捕獲的異常,將引起致命錯(cuò)誤。
Fatal?error:?Uncaught?RuntimeException
try?{ ????swooleCoroutine::create(function?()?{ ????????throw?new?RuntimeException(__FILE__,?__LINE__); ????}); } catch?(Throwable?$e)?{ ????echo?$e; }
正確
在協(xié)程內(nèi)捕獲異常。
function?test()?{ ????throw?new?RuntimeException(__FILE__,?__LINE__); } SwooleCoroutine::create(function?()?{ ????try?{ ????????test(); ????} ????catch?(Throwable?$e)?{ ????????echo?$e; ????} });
推薦學(xué)習(xí):?swoole視頻教程
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦