1

私はこのようなものを持っています:

try
{
    instance.SometimesThrowAnUnavoidableException(); // Visual Studio pauses the execution here due to the CustomException and I want to prevent that.
}
catch (CustomException exc)
{
    // Handle an exception and go on.
}

anotherObject.AlsoThrowsCustomException(); // Here I want VS to catch the CustomException.

コードの別の部分では、CustomExceptionがスローされる状況が複数発生しています。Visual Studio がinstance.SometimesThrowAnUnavoidableException()行でブレークを停止するように強制したいと思います。これにより、 CustomExceptionでブレークすることに関心のある他の場所のビューがわかりにくくなります。

DebuggerNonUserCodeを試しましたが、目的が異なります。

Visual Studio が特定のメソッドでのみ特定の例外をキャッチするのを無効にする方法は?

4

5 に答える 5

2

カスタム コードを使用して、これを 2 つの手順で行うことができます。

  1. 例外での自動ブレークを無効にしCustomExceptionます。
  2. AppDomain.FirstChanceExceptionイベントのハンドラーをアプリケーションに追加します。ハンドラーで、実際の例外が である場合はCustomException、コール スタックをチェックして、実際にブレークする必要があるかどうかを確認します。
  3. を使用しDebugger.Break();て、Visual Studio を停止させます。

コード例を次に示します。

private void ListenForEvents()
{
    AppDomain.CurrentDomain.FirstChanceException += HandleFirstChanceException;
}

private void HandleFirstChanceException(object sender, FirstChanceExceptionEventArgs e)
{
    Exception ex = e.Exception as CustomException;
    if (ex == null)
        return;

    // option 1
    if (ex.TargetSite.Name == "SometimesThrowAnUnavoidableException")
        return;

    // option 2
    if (ex.StackTrace.Contains("SometimesThrowAnUnavoidableException"))
        return;

    // examine ex if you hit this line
    Debugger.Break();
}
于 2013-07-30T12:32:58.847 に答える
1

Visual Studio で、debug->exceptions に移動しCustomException、適切なチェックボックスをオフにして中断をオフにし、コード内 (おそらくcatchステートメント上) で実際に中断したい場所にブレークポイントを設定します。

于 2013-04-05T12:12:17.483 に答える
0

Visual Studio がコードの特定の場所で停止するのを単純に無効にすることはできません。特定のタイプの例外がスローされたときにのみ停止するのを防ぐことができますが、それはそのような例外が発生するすべての場所に影響します。

実際には、 280Z28で提案されているカスタム ソリューションを実装できます。

于 2013-07-30T12:10:34.410 に答える
0

ある型のすべての例外で Visual Studio の中断を停止するには、[例外] ウィンドウから動作を構成する必要があります。

完全な手順はこちらにありますが、要点は、[デバッグ] メニューに移動して例外を選択し、デバッガーを中断させたくない項目のチェックを外すことです。

この手法を使用して特定のメソッドを回避する方法はないと思いますが、「なぜこれが例外をスローするのか」という質問の方が適切かもしれません。

#IF DEBUGプリプロセッサ命令のセットを追加して、コードの問題のあるセクションを実行しないようにすることができます。

于 2013-04-05T12:11:55.503 に答える