在基于COM的 Windows 资源管理器外壳扩展中,错误条件使用从 COM 接口方法返回的HRESULT
返回值来表示。
但是,如果在 COM 接口方法的主体内部(或在 COM 方法中直接或间接调用的某个 C++ 对象的方法内部)抛出了 C++ 异常(例如std::runtime_error
、std::bad_alloc
、std::invalid_argument
等),究竟会发生什么?
这只是一个未定义的行为吗?
或者C++ 异常是否以某种方式转换为Win32 结构化异常 (SEH)?
如果是这样,转换过程的机制是什么?