16

我需要为函数编写一个包装器。它的目的是缓存函数的结果和可能的异常。它应该按如下方式工作:在第一次执行期间,它应该执行函数并存储函数返回的结果(或异常)。在下一次执行期间,它应该返回先前存储的结果或重新抛出捕获的异常。

问题是,我想存储异常的类型。所以基本上我想捕获每种类型的异常,并在将来重新抛出它而不会丢失它的类型。

我正在使用 C++ 或 C++11,因此非常感谢使用其中一种语言的任何解决方案。

4

2 回答 2

23

你正在寻找std::exception_ptr.

您可以使用 获取当前捕获的异常std::current_exception(),存储结果std::exception_ptr,稍后使用std::rethrow_exception(std::exception_ptr)

cppreference wiki上有一个很好的用法示例。

于 2012-09-02T09:52:10.077 回答
0

来自 VC++ 的 exception_ptr 正在使用 RaiseException

于 2012-11-30T07:47:26.377 回答