CFileDialog在调试器窗口中发布“第一次机会异常”

时间:2014-07-19 23:10:44

标签: 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的调试器输出窗口中收到以下消息:

  

MyApp.exe中0x00007ffb653d5bf8的第一次机会异常:0x000006BA:   RPC服务器不可用。

这是我需要关注的事情吗?

1 个答案:

答案 0 :(得分:1)

打破第一次机会异常的原因很有用:

  • 乍一看似乎处理了异常,但事实并非如此。 (您的应用程序确实有一个异常处理程序,但它最终会重新抛出异常。)
  • 异常出现在调试器中,但实际上并非如此。 (您的应用程序确实有一个异常处理程序,但它只记录异常并中止程序。与上面类似。)
  • 处理了异常,但指出了应该修复的更深层次的问题。

打破第一次机会异常的原因可能是无用的:

  • 处理了异常,并没有指出你应该担心的任何事情。
  • 处理异常,确实指出了一个真正的问题,但是一个无法解决的问题,只能处理。

调试器无法知道哪些适用,这是您作为开发人员的工作。基于问题中的信息,我猜这是第四个要点,这意味着当抛出异常类型的异常时,最好不要让调试器中断。

一般情况下,如果获得第一次机会异常消息,但一切正常,则可能无需担心。这意味着存在异常,但异常被捕获并且看似正确处理。