サードパーティのCOMオブジェクトの例外から自分のC++コード(Windows x86)を保護し、次のSEH擬似コードを使用してそれらの例外をログに記録しています。
__try {
hr = m_ComObj->SomeFunc();
} __except ( LogExceptionInfo(GetExceptionCode(), GetExceptionInformation()) ) {
hr = E_UNEXPECTED;
m_ComObjCrashed = true;
}
このアプローチは、SEHコードが存在しない場合に処理される例外をキャッチする可能性がありますか?
以下のMSDNの記事では、デフォルトの未処理の例外フィルターが、ロードされたリソースのメモリにコードが書き込まれるケースをキャッチして修正すると述べています。SEHを使用すると、望ましいデフォルトのOSの動作が妨げられる他のケースはありますか?