我需要为函数编写一个包装器。它的目的是缓存函数的结果和可能的异常。它应该按如下方式工作:在第一次执行期间,它应该执行函数并存储函数返回的结果(或异常)。在下一次执行期间,它应该返回先前存储的结果或重新抛出捕获的异常。
问题是,我想存储异常的类型。所以基本上我想捕获每种类型的异常,并在将来重新抛出它而不会丢失它的类型。
我正在使用 C++ 或 C++11,因此非常感谢使用其中一种语言的任何解决方案。
我需要为函数编写一个包装器。它的目的是缓存函数的结果和可能的异常。它应该按如下方式工作:在第一次执行期间,它应该执行函数并存储函数返回的结果(或异常)。在下一次执行期间,它应该返回先前存储的结果或重新抛出捕获的异常。
问题是,我想存储异常的类型。所以基本上我想捕获每种类型的异常,并在将来重新抛出它而不会丢失它的类型。
我正在使用 C++ 或 C++11,因此非常感谢使用其中一种语言的任何解决方案。
你正在寻找std::exception_ptr
.
您可以使用 获取当前捕获的异常std::current_exception()
,存储结果std::exception_ptr
,稍后使用std::rethrow_exception(std::exception_ptr)
cppreference wiki上有一个很好的用法示例。
来自 VC++ 的 exception_ptr 正在使用 RaiseException