取消exception_ptr?

时间:2016-02-25 20:44:56

标签: c++ multithreading c++11 exception

我有一些类对象,我想在发生一些异常后重复使用它们。我的问题是关于使用exception_ptr从其他线程传输的异常。例如,在开始操作之前的几个函数(旨在由对象的用户调用)执行if (_wrkrExc) rethrow_exception(_wrkrExc);。我希望能够在抛出异常后重用该对象(这会强制用户处理它)。重新抛出后exception_ptr是否为空,或者必须手动完成,以便下一个检查点不会再次抛出?如果是后者,处理它会有什么好的设计呢?添加Clear()Reset()方法执行_wrkrExc = nullptr;,用户在重用对象之前必须调用该方法,这似乎是我的类API膨胀;或者,做下面这样的事情看起来最难看:

try
{
    if (_wrkrExc) rethrow_exception(_wrkrExc);
}
catch (...)
{
    _wrkrExc = nullptr;
    throw;
}

那么有什么建议吗?

0 个答案:

没有答案