処理された例外が発生したときにVisual Studioが中断するようにしたい(つまり、「最初のチャンス」メッセージを表示したくないだけでなく、実際の例外をデバッグしたい)。
例えばデバッガーに例外を発生させたい:
try
{
System.IO.File.Delete(someFilename);
}
catch (Exception)
{
//we really don't care at runtime if the file couldn't be deleted
}
私は遭遇しました これら Visual Studio.NETのメモ:
1)VS.NETで、[デバッグ]メニュー>> [例外...] >> [共通言語ランタイムの例外] >> [システム]に移動し、[System.NullReferenceException]を選択します。
2)そのダイアログの下部に「例外がスローされたとき:」グループボックスがあり、「デバッガーにブレーク」を選択します
3)シナリオを実行します。例外がスローされると、デバッガーは停止し、「タイプ "System.NullReferenceException"の例外がスローされました。[Break] [Continue]」などのダイアログが表示されます。
[Break]を押します。これにより、問題の原因となっているコード行が表示されます。
ただし、Visual Studio 2005には適用されません(デバッグメニューに例外オプションはありません)。
「例外がスローされたとき」グループボックス、「Break into」オプションを持つVisual Studioのこのオプションダイアログの場所を知っている人はいますか?デバッガー」?
更新:問題は、私のデバッグメニューに例外項目がなかったことです。メニューをカスタマイズして手動で追加しました。
ソリューションを開いた状態で、デバッグ-例外(Ctrl+D、E)メニューオプション。そこから、スローされた例外またはユーザーが処理していない例外をブレークすることを選択できます。
編集:私のインスタンスはC#「プロファイル」で設定されているのでしょうか、おそらく他のプロファイルにはないのでしょうか?
VS2005には「例外」ウィンドウがあります...試してみてください Ctrl+Alt+E デバッグするときに、停止する例外の[スロー]チェックボックスをクリックします。
デバッガによる例外の管理 ページをチェックして、これを設定する方法を説明します。
基本的に、ここに手順があります(デバッグ中):
[デバッグ]メニューの[例外]をクリックします。
[例外]ダイアログボックスで、例外のカテゴリ全体(たとえば、共通言語ランタイム例外)に対して[スロー]を選択します。
-または-
共通言語ランタイム例外などの例外のカテゴリのノードを展開し、そのカテゴリ内の特定の例外に対して[スロー]を選択します。
私が使用する手法は次のようなものです。デバッグしようとしているものに応じて、1つまたは複数のtry catchブロックに使用できるグローバル変数を定義し、次の構造を使用します。
if(!GlobalTestingBool)
{
try
{
SomeErrorProneMethod();
}
catch (...)
{
// ... Error handling ...
}
}
else
{
SomeErrorProneMethod();
}
IDEを壊したくないいくつかの例外がまだあるので、これはテストの面でもう少し柔軟性を与えてくれます。
オンラインのドキュメントは少し不明瞭に見えるので、ちょっとテストを行ったところです。 [例外]ダイアログボックスから[スローで中断]を選択すると、プログラムの実行がany例外で処理または処理されずに中断します。処理された例外のみを中断したい場合、あなたの唯一の手段は、コードを調べて、処理されたすべての例外にブレークポイントを置くことです。これは少し過剰に思えるので、例外を処理するときはいつでもデバッグステートメントを追加する方が良いかもしれません。次に、その出力が表示されたら、コードのその行にブレークポイントを設定できます。