1

私の 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 サーバーを利用できません。

それは私が心配する必要があるものですか?

4

1 に答える 1

1

初回例外での中断が役立つ理由は次のとおりです。

  • 一見、例外は処理されているように見えますが、実際には処理されていません。(アプリケーションには例外ハンドラーがありますが、例外を再スローしてしまいます。)
  • デバッガーには例外が処理されているように見えますが、実際にはそうではありません。(アプリケーションには例外ハンドラがありますが、例外をログに記録してプログラムを中止するだけです。上記と同様です。)
  • 例外は処理されますが、修正する必要があるより深い問題を示しています。

最初のチャンスの例外で中断することが役に立たない理由は次のとおりです。

  • 例外は処理され、心配する必要のあるものは何も指していません。
  • 例外は処理され、実際の問題を示していますが、修正できず、処理されるだけです。

デバッガーはこれらのどれが当てはまるかを知ることができません。それは開発者としてのあなたの仕事です。質問の情報に基づいて、これが 4 番目の箇条書きであると推測します。つまり、そのタイプの例外がスローされたときにデバッガーを中断させない方がよいということです。

一般に、最初の例外メッセージしか表示されず、すべてが正常に機能する場合は、おそらく心配する必要はありません。例外があったことを意味しますが、例外はキャッチされ、正しく処理されたようです。

于 2014-07-19T23:38:31.720 に答える