c++ - CFileDialog 在调试器窗口中发布 "First-chance exception"

标签 c++ windows winapi mfc fileopendialog

我的 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/

相关文章:

c++ - 临时对象存储在哪里?

c++ - 如何在 C++ 中维护指向父对象的弱指针?

php - FFmpeg 不会从 php 运行

windows - 将文件添加到 Windows 中的所有用户 'My Documents' 文件夹

windows - Win32 应用程序可以调用 WinRT API 吗?

c++ - C++ 中函数或类之前的宏是什么?

c++ - 是否可以从某个对象的中间部分取消分配内存和 "split"呢?

windows - QStringList QCoreApplication::arguments() - 在什么情况下索引 0 不是 Windows 中的应用程序路径?

c++ - LPCTSTR 到 LPCSTR 转换

python - pywin32 win32gui.PumpWaitingMessages() 放置