デバッガーが非同期メソッドの例外で中断/停止しない 質問する

デバッガーが非同期メソッドの例外で中断/停止しない 質問する

デバッガーが .NET プロセスにアタッチされると、未処理の例外がスローされると (通常は) 停止します。

ただし、メソッド内ではこれは機能しないようですasync

これまでに試したシナリオは次のコードにリストされています。

class Program
{
    static void Main()
    {
        // Debugger stopps correctly
        Task.Run(() => SyncOp());

        // Debugger doesn't stop
        Task.Run(async () => SyncOp());

        // Debugger doesn't stop
        Task.Run((Func<Task>)AsyncTaskOp);

        // Debugger stops on "Wait()" with "AggregateException"
        Task.Run(() => AsyncTaskOp().Wait());

        // Throws "Exceptions was unhandled by user code" on "await"
        Task.Run(() => AsyncVoidOp());

        Thread.Sleep(2000);
    }

    static void SyncOp()
    {
        throw new Exception("Exception in sync method");
    }

    async static void AsyncVoidOp()
    {
        await AsyncTaskOp();
    }

    async static Task AsyncTaskOp()
    {
        await Task.Delay(300);
        throw new Exception("Exception in async method");
    }
}

何か見落としているのでしょうか? 例外が発生したときにデバッガーを中断/停止させるにはどうすればよいですかAsyncTaskOp()?

ベストアンサー1

メニューの下でDebug、 を選択しますExceptions...。例外ダイアログで、Common Language Runtime Exceptions行の横にあるボックスをオンにしますThrown

VS2022 の場合...「デバッグ」「Windows」「例外設定」を選択し、 のすぐ左にあるボックスをオンにしますCommon Language Runtime Exceptions

おすすめ記事