2

C# プロジェクトで再利用しているアンマネージ C++ コードのチャンクがあります。アンマネージ C++ コードは、C# コードと対話するマネージ C++ コードのレイヤー内にラップされます。現在、アンマネージ C++ コードは assert(false) を使用して重大なエラーを発生させます。assert() は stderr に書き込み、私のプロジェクトは GUI プログラムなので、アサートの出力は表示されないと思います。assert(false) を throw new exception(...) に置き換えてから、C# GUI レイヤーで例外をキャッチして表示することを考えています。私の質問は次のとおりです。

1) assert() を exception() に置き換えるのは良い考えですか? そうでなければ、なぜですか?

2) アンマネージ C++ コード内で例外がスローされた場合、例外はマネージ C++ に適切に伝播され、次に C# コードに (スタック トレースはそのままで正しい状態で) 伝播されますか?

ありがとう、

4

1 に答える 1