使用VC ++捕获Try和catch块中的第一次机会异常

时间:2013-11-25 11:44:41

标签: visual-studio debugging visual-c++ com visual-studio-debugging

在某些VC ++代码块中,我遇到了第一次机会异常 -

myapp.EXE中0x77e4bef7的第一次机会异常:Microsoft C ++异常:内存位置0x0013ee04处的ComUtil :: ComError ..

我可以在Visual Studio的Output窗口中看到上面的异常。 我怎么能抓住这个例外。我正在使用Visual Studio 2008进行开发。

1 个答案:

答案 0 :(得分:6)

它只是一个调试器通知,并没有任何意义。你像往常一样捕获异常,只需尝试/捕获。在这种情况下,您需要catch (_com_error& ex),它会告诉您COM方法调用失败的原因。

“第一次机会”异常很有用,因为您可以要求调试器在抛出异常时停止。这可以让你找到为什么被抛出。您使用Debug + Exceptions,勾选C ++异常的Thrown复选框。在_com_error异常的情况下,您不会非常感兴趣,您只需看到从#import指令获得的自动生成的包装器。如果您不想看到通知的噪音,只需右键单击“输出”窗口并取消选中“异常消息”。