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