私は、COM相互運用機能を介してC#クライアントから呼び出されるさまざまなC++ COM DirectShowフィルタに取り組んでいます。コードにはC++の例外はほとんどありません。主な例外はbad_alloc例外をスローするoperator newです。C++ COMオブジェクトの中に投げ込まれたbad_alloc例外をきれいに処理する方法はありますか?
bad_alloc例外をC#クライアントが捕まえることができる方法で処理するきれいな方法がありますか?
新しいハンドラがCOM相互運用機能クライアントによってキャッチされる可能性のあるSEH例外をスローできますか?
または、Visual Studioライブラリのbackwardly互換非投げバージョンの新しいバージョンとリンクして、すべての割り当てをチェックする方が良いでしょうか?
退屈な選択肢の1つは、bad_alloc例外がめったに回復できないので、価値のないように見える何百ものCOMエントリポイントに対してtry/catchを書き込むことです。
DirectShowの基本クラスは、bad_alloc例外をスローしなかった以前のバージョンのVisual C++で記述されているように、operator newからのnull戻りを一般的にチェックします。
例外処理コードを書くのが簡単になる方法は、この質問の受け入れられた回答に概説されています。例外処理でコードを再利用 – Laserallan