如何在不将变量赋值给异常的情况下查看调试器中的异常细节?

Dan*_*kov 41 c# exception visual-studio

我希望在Visual Studio调试器中看到异常细节,而无需将变量分配给异常.目前我必须写这样的东西:

try 
{
    //some code
}
catch (SecurityException ex)
{
   //some code or ever no any code 
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio抛出一个错误,表明从未使用过ex变量,但我需要这个变量来查看调试时的异常细节.

更新:我知道如何抑制VS错误'变量永远不会被使用',问题是在没有这个变量的情况下看到内部异常.@VladimirFrolov的$ exception变量或@MarcGravell的异常助手是一个答案.

Vla*_*mir 84

您可以在"本地"列表中查看您的例外或$exception在"观察"列表中使用:

try
{
    // some code
}
catch (SecurityException)
{ // place breakpoint at this line
}
Run Code Online (Sandbox Code Playgroud)

  • @FrederikGheysels,我总是在VS2017中使用`$ exception`,它运行得很好. (4认同)
  • 在 VS 2019 中仍然有效。优秀的解决方案;但非常模糊:VS 确实可以通过在鼠标悬停时显示一些线索来改进这一点。 (2认同)

Mar*_*ell 9

你不需要做任何事情:只需在catch(或在一个catch步骤中进入一个步骤)中放置一个断点,你应该看到一个邀请来查看异常助手.这适用于裸体catch或特定于类型的catch(SecurityException)块:

在此输入图像描述

它给你一切:

在此输入图像描述

  • Visual Studio 2015是否可能不再具有此功能?至少它只是进入`catch`块而不提供任何帮助,就像任何其他代码行一样,无论我在哪里放置断点. (5认同)

Car*_*edo 5

在您遇到异常时,您可以随时检查监视窗口并添加变量:$exception。这将使您能够处理所有异常元数据。