プログラム (デバッガー内) で予期しない例外が発生した場合。その時点でプログラムを強制終了することは、続行するよりも有害であるため、単にスキップしたい場合があります。または、別のエラー/バグにもっと興味があったので、続行したいだけです
これを有効にするオプション/compilerflag/secretswitchはありますか?
例外はすぐに解決する必要があることは理解していますが、(説明したように)当分の間スキップしたいシナリオがあります
コードに適切な catch ブロックがないと、これを行うことはできません。ただし、これをやりたいと思ったことは一度もありません。コードが実際に処理する方法がわからない例外が発生した場合、なぜ続行したいのでしょうか? その時点であなたは悪い状態にあり、このまま続けるのは危険です。
本番コードではなく、デバッガー セッションで続行したい理由の例を挙げていただけますか?
C# の例外は再開可能ではありませんが、イベントは再開可能であり、再開可能な例外は通常、キャンセル可能なイベントとして実装されます。この質問も参照してください。
try-catch ブロックを使用し、キャッチするときは例外について何もしません。
デバッガーを使用している場合は、続行する行を右クリックして選択します。次のステートメントを設定... ただし、自己責任で使用してください。
デバッグ モードでコードをステップ実行すると、望ましくない例外をスローする命令の実行をスキップできます。ただし、例外が既にスローされていて、try/catch がない場合は伝播します。
「スキップ」とは、例外の後もプログラムを引き続き動作させたいという意味だと思います。もちろん、それは try-catch ブロックを使用して例外をキャッチすることで可能です。
例外がアプリケーション ストッパーでない場合 (たとえば、一部のキー変数が例外の後に初期化されず、作業を続行できない場合)、続行する前に少なくともログに記録することをお勧めします。もちろん入れて
キャッチ (例外 e) { }
ソースのどこにいても、安定したアプリケーションにはなりません ;)
問題がデバッガーに関連している場合 (例外がスローされるたびにデバッガーを停止させたくない場合)、VS にはこれを変更できる場所があります。
[デバッグ] メニューで、 [例外] を選択します。考えられるすべての例外が表示され、スローされた場合やユーザーによって処理されなかった場合の動作を調整できます。
Exception Handling Application Blockおよび関連ドキュメントを参照してください。これには、アプリケーションの例外を処理するためのベスト プラクティスが含まれており、ロギングなど、多くのフレームワーク コードが実行されます。
許可したい例外を知りたい場合。次に、これを以下で実行できます
try
{
// your functionality
}
catch(Exception ex)
{
// Catch only the exceptions you need to point out
}
finally
{
//do what you want to complete with this function.
}