在线程之间传播异常
简介:
在多线程应用程序中,至关重要有效处理异常,防止应用程序意外崩溃。使用多个线程时,工作线程上发生的异常应该优雅地传播回主线程进行处理,确保应用程序保持稳定。
使用异常指针的解决方案:
C 11 引入了异常指针(exception_ptr)的概念,它允许跨线程边界传输异常。异常指针保存对异常对象的共享指针引用。下面是一个示例:
<code class="cpp">#include <thread> #include <exception> std::exception_ptr exceptionPtr; void workerThread() { try { // Perform some task with potential exceptions } catch(...) { exceptionPtr = std::current_exception(); } } int main() { std::thread worker(workerThread); worker.join(); if (exceptionPtr) { try { std::rethrow_exception(exceptionPtr); } catch (const std::exception& ex) { // Handle the exception on the main thread std::cerr << "Exception occurred on worker thread: " << ex.what() << "\n"; } } return 0; }</code>
在此解决方案中,异常指针是在工作线程上创建的,并分配了对捕获的异常的引用。然后主线程检查异常指针是否存在,并重新抛出异常进行处理。
注意:
以上是如何在 C 线程之间有效地传播异常?的详细内容。更多信息请关注PHP中文网其他相关文章!