首页 > 解决方案 > 如何跟踪在代码中捕获抛出异常的位置 - Visual Studio

问题描述

我发现了很多关于如何追踪捕获的异常在哪里被抛出的问题,但我找不到任何关于代码中抛出的异常在哪里被捕获的问题。假设我们使用一个巨大的程序,并且在代码中的某个地方手动抛出了一个异常,但没有在同一个块或从哪里调用它。由于应用程序没有终止,我们可以假设异常在某处被捕获。我们如何在 Visual Studio 中跟踪该异常并查看它在哪里被捕获和处理?

标签: .netvisual-studioexception

解决方案


您可以使用我的Runtime Flow工具获得一些帮助。

例如,运行以下程序:

class Program
    {
        static void bar()
        {
            throw new ApplicationException("");
        }

        static void foo()
        {
            bar();
        }

        static void Main(string[] args)
        {
            try
            {
                foo();
            }
            catch (System.Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }

生成如下监控结果:

在此处输入图像描述

您可以看到异常是如何从 bar 方法引发的,然后是从 foo 方法引发的,而不是在 Main 中引发(捕获)。


推荐阅读