C#プログラムをデバッグし、例外がスローされると(コードによってスローされるORフレームワークによってスローされる))、IDEが停止し、私のコードの対応する行。
今のところすべてが順調です。
次に「F5」を押して続行します。この瞬間から、私が無限ループにいるように継ぎ目があります。 IDE常に例外行に戻る必要があります。 Shift + F5 (デバッグを停止/プログラムを終了します)彼から抜け出します。
私はここで何人かの同僚と話をしました、そして彼らはこれが彼らにもいつか起こると私に言いました。
何が起こっていますか?
これは、例外が処理されず、Visual Studioは、何らかの方法で処理されない限り、その行を超えて移動できないためです。簡単に言えば、それは仕様によるものです。
実行できることの1つは、実行ポイント(黄色の線/矢印)をコード内の前のポイントにドラッグアンドドロップし、(Visual Studioウォッチウィンドウを使用して)メモリ内の値を変更して、例外が発生しないようにすることです。次に、コードのステップ実行を再開します1。
ただし、実行を停止して例外の原因となっている問題を修正するか、スローが望ましくない場合は例外を適切に処理することをお勧めします。
1 基本的に一部のコードを再実行している(実行を巻き戻さない)ため、これは意図しない結果をもたらす可能性があります。
VisualStudioでオプション "未処理の例外でコールスタックをアンワインド"がチェックされている可能性があります。このオプションがオンの場合、Visual Studioは例外の直前に巻き戻されるため、 F5 同じ例外に突っ込み続けます。
オプションのチェックを外すと、Visual Studioは例外で壊れますが、 F5 その線を越えて進みます。
このオプションはメニューの下にありますツール→オプション→デバッグ→一般。
IDEが問題のあるコード行で中断すると、例外を生成した行を実行する直前に停止します。続行すると、その行が再度実行され、例外が再度発生します。
エラーを過ぎて何が起こったかを確認したい場合は、エラーが発生していなければ、黄色で強調表示された行(次に実行される行)を問題のあるコードの次の行にドラッグできます。もちろん、問題のある行が何をしなかったかによっては、プログラムが他のエラーを引き起こす状態になっている可能性があります。その場合は、あまり役に立たないので、例外が発生するようにコードを修正する必要があります。発生しない、または適切に処理されます。
例外が発生すると、Visual Studio(または使用している可能性のあるIDE)は、コードで例外が処理されない限り、それ以上進むことはできません。
この動作は仕様によるものです。
キャッチされない例外はアプリをダウンさせます。これの代わりに、VSはキャッチされない例外を維持します。アプリを終了するか、逆巻きする必要があります。