在執行緒之間傳播異常
簡介:
在多執行緒應用程式中,至關重要有效處理異常,防止應用程式意外崩潰。使用多個執行緒時,工作執行緒上發生的異常應該會優雅地傳播回主執行緒進行處理,確保應用程式保持穩定。
使用異常指標的解決方案:
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中文網其他相關文章!