异常处理

最后更新于:2022-04-02 06:30:32

# 异常处理 [TOC] 在协程编程中可直接使用`try/catch`处理异常。**但必须在协程内捕获,不得跨协程捕获异常**。 ## 错误 下面的代码中,`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; } }); ~~~
';