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 に答える