我的 Windows 应用程序使用了以下用于打开文件的 C++/MFC 代码:
CFileDialog fd(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER,
NULL, hParentWnd ? CWnd::FromHandle(hParentWnd) : NULL);
fd.m_pOFN->Flags &= ~(OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_NODEREFERENCELINKS);
fd.m_pOFN->Flags |= OFN_FILEMUSTEXIST;
INT_PTR nRes = fd.DoModal(); //This call causes the warning
它运行良好,但我在 VS 2008 的调试器输出窗口中收到以下消息:
First-chance exception at 0x00007ffb653d5bf8 in MyApp.exe: 0x000006BA: The RPC server is unavailable.
这是我需要关心的事情吗?
最佳答案
中断第一次机会异常可能有用的原因是:
- 乍一看似乎处理了异常,但实际上没有。 (您的应用程序确实有一个异常处理程序,但它最终会重新抛出异常。)
- 调试器似乎处理了异常,但实际上没有。 (您的应用程序确实有一个异常处理程序,但它只是记录异常并中止程序。与上述类似。)
- 异常已得到处理,但指出了更深层次的问题,需要解决。
打破第一次机会异常可能没有用的原因是:
- 异常已得到处理,没有指向您应该担心的任何事情。
- 异常已处理,确实指向一个真正的问题,但无法修复,只能处理。
调试器无法知道哪些适用,这是您作为开发人员的工作。根据问题中的信息,我猜这是第四个要点,这意味着在抛出该类型的异常时最好不要让调试器中断。
一般来说,如果您只第一次收到异常消息,但一切正常,则可能没什么好担心的。这意味着有一个异常,但异常被捕获并且似乎被正确处理。
关于c++ - CFileDialog 在调试器窗口中发布 "First-chance exception",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24845826/