我正在保护自己的C ++代码(Windows x86)免受第三方COM对象中的异常的影响,并使用以下SEH伪代码记录这些异常。
__try {
hr = m_ComObj->SomeFunc();
} __except ( LogExceptionInfo(GetExceptionCode(), GetExceptionInformation()) ) {
hr = E_UNEXPECTED;
m_ComObjCrashed = true;
}
这种方法是否可能捕获在SEH代码不存在时可以处理的异常?
下面的MSDN文章提到默认的未处理异常过滤器将捕获并修复代码写入已加载资源中的内存的情况。是否存在使用SEH会干扰理想的默认操作系统行为的其他情况?
A Crash Course on the Depths of Win32™ Structured Exception Handling
答案 0 :(得分:1)
是的,这很合理。
它将捕获COM函数中未处理的所有异常
我没有看到与默认操作系统行为有任何干扰相关的问题