COMベースの Windows エクスプローラ シェル拡張機能では、COM インターフェイス メソッドから返される戻り値を使用してエラー状態が表現されますHRESULT
。
しかし、COM インターフェイス メソッドの本体内 (または、COM メソッドで直接的または間接的に呼び出される C++ オブジェクトのメソッド内) で C++ 例外 (例: std::runtime_error
、std::bad_alloc
、std::invalid_argument
など) がスローされた場合、正確には何が起こるのでしょうか?
これは未定義の動作ですか?
それとも、C++ 例外が何らかの方法でWin32 構造化例外 (SEH)に変換されているのでしょうか?
もしそうなら、変換プロセスのメカニズムは何ですか?