使用异常帮助程序检查异常

无论技术或专业知识水平如何,处理异常都是一个常见问题。 它可能是一种令人沮丧的体验,找出异常导致代码中的问题的原因。 在 Visual Studio 中调试异常时,我们希望通过为你提供相关的异常信息来减少这种挫折感,以帮助更快地调试问题。

异常帮助程序

出现异常时暂停

当调试器在发生异常时中断,对应的代码行右侧会显示异常错误图标。 非模式异常帮助程序将显示在异常图标附近。

代码行旁的异常辅助工具

检查异常信息

你可以立即在异常帮助程序中读取异常类型和异常消息,以及异常是已引发还是未处理。 可以通过单击 视图详细信息 链接来检查和查看 Exception 对象的属性。

分析空引用

从 Visual Studio 2017 开始,对于 .NET 和 C/C++ 代码,当触发 NullReferenceExceptionAccessViolation时,可以在异常辅助工具中看到“null”分析信息。 分析显示为异常消息下方的文本。 在下图中,信息显示为“s 为空”。

异常帮助程序空分析

说明

托管代码中的空引用分析需要 .NET 版本 4.6.2。 通用 Windows 平台(UWP)和任何其他 .NET Core 应用程序目前不支持 Null 分析。 仅在调试没有任何 Just-In-Time (JIT) 代码优化的代码时可用。

配置异常设置

你可以在异常帮助程序的“异常设置”部分将调试器配置为在引发当前类型的异常时中断。 如果调试器在引发的异常处暂停,则可以使用复选框禁止在将来引发该异常类型时中断。 如果你不想在此特定异常在特定模块中引发时中断,请在“异常设置”窗口中的“例外引发位置:”下方勾选模块名称旁的复选框

检查内部异常

如果异常具有任何内部异常(InnerException,则可以在异常帮助程序中查看它们。 如果存在多个异常,可以使用调用堆栈上方所示的向左箭头和向右箭头在它们之间导航。

异常帮助程序 具有内部异常的异常帮助程序

检查重新引发的异常

在异常 thrown 的情况下,异常帮助程序会显示引发第一次异常的调用堆栈。 如果多次引发异常,则仅显示原始异常中的调用堆栈。

重新引发异常的异常帮助程序 具有重新引发的异常的异常帮助程序

检查异步异常 (.NET)

从 .NET 9 开始,当异步 Task 方法在 .NET Framework 代码中引发异常时,Visual Studio 调试器会自动中断。 这样可以更轻松地调试异步代码,尤其是在 ASP.NET 中,因为异常通常跨异步边界引发。

使用异步方法的异常帮助程序的屏幕截图。

查看调用堆栈

从 Visual Studio 2022 版本 17.3 开始,可以在“调用堆栈”窗口中查看异常堆栈帧。 对于异步异常,这增加了快速加载符号或定位源并直接转到异常站点的功能。 调用堆栈窗口中的异常堆栈帧提供标准调用堆栈功能,例如自动导航、快速切换帧、符号加载和反编译选项,以返回到引发异常的源代码。

使用调用堆栈的异常帮助程序

获取 AI 帮助

如果你有 Copilot,则可以在调试异常时获得 AI 帮助。 只需查找“询问 Copilot”“询问 Copilot”按钮的屏幕截图。按钮。 在这些方案中,Copilot 已经知道你的问题的上下文,因此你无需在聊天中自行提供上下文。 有关详细信息,请参阅使用 Copilot 进行调试

使用 Live Share 共享调试会话

在异常帮助程序中,可以使用链接“启动 Live Share 会话...”启动 Live Share 会话。加入 Live Share 会话的任何人均可看到异常帮助程序及任何其他调试信息。