web-dev-qa-db-ja.com

Visual Studio:処理された例外を解除する方法

処理された例外が発生したときに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のこのオプションダイアログの場所を知っている人はいますか?デバッガー」?

更新:問題は、私のデバッグメニューに例外項目がなかったことです。メニューをカスタマイズして手動で追加しました。

152
Ian Boyd

ソリューションを開いた状態で、デバッグ-例外(Ctrl+DE)メニューオプション。そこから、スローされた例外またはユーザーが処理していない例外をブレークすることを選択できます。

編集:私のインスタンスはC#「プロファイル」で設定されているのでしょうか、おそらく他のプロファイルにはないのでしょうか?

161
Austin Salonen

VS2005には「例外」ウィンドウがあります...試してみてください Ctrl+Alt+E デバッグするときに、停止する例外の[スロー]チェックボックスをクリックします。

41
Rob Walker

期待値の設定のための新しい場所を見つけるためにしばらく時間がかかったので、新しい答えがありました。

Visual Studio 2015以降、例外設定ウィンドウ(デバッグ-> Windows->例外設定)で停止する例外を制御します。ショートカットはまだです Ctrl-Alt-E

カスタム例外を処理する最も簡単な方法は、「このリストにないすべての例外」を選択することです。

英語版のスクリーンショットを次に示します。

enter image description here

ドイツ語版のスクリーンショットを次に示します。

enter image description here

19
Beginner

Visual Studio 2015以降では、[例外設定]ダイアログ(Ctrl+Alt+E)、「共通言語ランタイム例外」(またはArgumentNullExceptionなどの特定の例外)をオフにして、handled exceptionsでブレークするようにします。

ステップ1 - Step 1 ステップ2 Step 2

10
Sameer

デバッガによる例外の管理 ページをチェックして、これを設定する方法を説明します。

基本的に、ここに手順があります(デバッグ中):

  1. [デバッグ]メニューの[例外]をクリックします。

  2. [例外]ダイアログボックスで、例外のカテゴリ全体(たとえば、共通言語ランタイム例外)に対して[スロー]を選択します。

    -または-

    共通言語ランタイム例外などの例外のカテゴリのノードを展開し、そのカテゴリ内の特定の例外に対して[スロー]を選択します。

7
Guy Starbuck

私が使用する手法は次のようなものです。デバッグしようとしているものに応じて、1つまたは複数のtry catchブロックに使用できるグローバル変数を定義し、次の構造を使用します。

if(!GlobalTestingBool)
{
   try
   {
      SomeErrorProneMethod();
   }
   catch (...)
   {
      // ... Error handling ...
   }
}
else
{
   SomeErrorProneMethod();
}

IDEを壊したくないいくつかの例外がまだあるので、これはテストの面でもう少し柔軟性を与えてくれます。

1
Spencer Ruport

オンラインのドキュメントは少し不明瞭に見えるので、ちょっとテストを行ったところです。 [例外]ダイアログボックスから[スローで中断]を選択すると、プログラムの実行がany例外で処理または処理されずに中断します。処理された例外のみを中断したい場合、あなたの唯一の手段は、コードを調べて、処理されたすべての例外にブレークポイントを置くことです。これは少し過剰に思えるので、例外を処理するときはいつでもデバッグステートメントを追加する方が良いかもしれません。次に、その出力が表示されたら、コードのその行にブレークポイントを設定できます。

0
markysdad