c 11 – 是否有相同的packaged_task :: set_exception?
发布时间:2020-12-16 03:35:19 所属栏目:百科 来源:网络整理
导读:我的假设是packaged_task在下面有一个承诺.如果我的任务抛出异常,我该如何将其路由到相关的未来?只有一个承诺我可以调用set_exception – 我如何为packaged_task做同样的事情? 解决方法 std :: packaged_task有一个关联的std :: future对象,它将保存异常(
我的假设是packaged_task在下面有一个承诺.如果我的任务抛出异常,我该如何将其路由到相关的未来?只有一个承诺我可以调用set_exception
– 我如何为packaged_task做同样的事情? 解决方法
std :: packaged_task有一个关联的std :: future对象,它将保存异常(或任务的结果).您可以通过调用std :: packaged_task的
get_future() 成员函数来检索该未来.
这意味着在与打包任务关联的函数内部抛出异常就足以使该异常被任务的未来捕获(并在未来对象上调用get()时重新抛出). 例如: #include <thread> #include <future> #include <iostream> int main() { std::packaged_task<void()> pt([] () { std::cout << "Hello,"; throw 42; // <== Just throw an exception... }); // Retrieve the associated future... auto f = pt.get_future(); // Start the task (here,in a separate thread) std::thread t(std::move(pt)); try { // This will throw the exception originally thrown inside the // packaged task's function... f.get(); } catch (int e) { // ...and here we have that exception std::cout << e; } t.join(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 测试封闭的ios应用程序
- ruby-on-rails – rails:devise,cancan,rolify以获取用户的
- Ruby:有一个关键字可以从内部调用一个方法(类似于super)吗
- c# – ASP.NET登录控件 – 我可以将FailureText作为项添加到
- c# – 在Pivot中包含更多行
- c# – 如何使用构造函数将XML反序列化到对象中,该构造函数需
- xml – JAXB是否在内部使用SAX或DOM?
- cocos2dx-音乐音效
- ruby-on-rails – 使用Prawn和Prawnto生成PDF
- c# – Azure Webjobs ServiceBusTrigger – 在达到MaxDeliv