NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# 异常处理 [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; } }); ~~~