使用SEH保护我的代码免受第三方COM对象引发的exception是合理的

我保护自己的C ++代码(Windows x86)不受第三方COM对象中的exception影响,并使用以下SEH伪代码logging这些exception。

__try { hr = m_ComObj->SomeFunc(); } __except ( LogExceptionInfo(GetExceptionCode(), GetExceptionInformation()) ) { hr = E_UNEXPECTED; m_ComObjCrashed = true; } 

如果SEH代码不存在,这种方法是否可能捕获将要处理的exception?

下面的MSDN文章提到,默认的未处理的exceptionfilter将捕获并修复代码在加载的资源中写入内存的情况。 还有其他情况下使用SEH会干扰理想的默认操作系统行为?

Win32™结构化exception处理深度课程

是的,这是相当合理的。

它将捕获在COM函数中未处理的所有异常

我没有看到与默认操作系统行为有任何干扰相关的问题