在協程程式設計中可直接使用try/catch處理例外狀況。但必須在協程內捕獲,不得跨協程捕獲異常。
不只是應用層throw的Exception,底層的一些錯誤也是可以被捕獲的,如function、class、method不存在
錯誤
################## ####在下面的程式碼中,try/catch和throw在不同的協程中,協程內無法捕捉到此例外。當協程退出時,發現有未捕獲的異常,將引起致命錯誤。 ###
Fatal error: Uncaught RuntimeException
try { Swoole\Coroutine::create(function () { throw new \RuntimeException(__FILE__, __LINE__); }); } catch (\Throwable $e) { echo $e; }
function test() { throw new \RuntimeException(__FILE__, __LINE__); } Swoole\Coroutine::create(function () { try { test(); } catch (\Throwable $e) { echo $e; } });
以上是swoole錯誤處理的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!