C#:在catch中调试时,您能得到一个非显式声明的异常吗?

C#:在catch中调试时,您能得到一个非显式声明的异常吗?,c#,visual-studio,debugging,C#,Visual Studio,Debugging,这是一个编译器警告,通常不赞成在代码中使用未使用的变量。因此,以下内容将生成警告,因为e未使用 try { throw new InvalidOpreationException(); } catch(Exception e) { } 正确的方法是不给异常命名,除非您打算使用它: try { throw new InvalidOpreationException(); } catch(Exception) { } 但这种“正确”的方式在调试时可能会很麻烦。你可以在catch中设置一个

这是一个编译器警告,通常不赞成在代码中使用未使用的变量。因此,以下内容将生成警告,因为e未使用

try {
  throw new InvalidOpreationException();
}
catch(Exception e) {
}
正确的方法是不给异常命名,除非您打算使用它:

try {
  throw new InvalidOpreationException();
}
catch(Exception) {
}
但这种“正确”的方式在调试时可能会很麻烦。你可以在catch中设置一个断点,但除非你停止应用程序,命名异常,重新编译并重新创建错误,否则你不会知道为什么会出现断点。至少可以说,这很烦人


更重要的是,该异常仍然存在,只是在此范围内没有显式名称。还有什么方法可以访问它吗?

尝试将$exception添加到监视窗口中。这将绑定到当前线程上活动的异常。您可以分析此变量以找出运行时类型和所需的所有详细信息

我已经用VisualStudio2008和更高版本验证了这一点

编辑

这种类型的功能在VisualStudio调试器中称为伪变量。您可以在以下位置获得完整的列表(按语言分类)


编译器警告存在,因为您正在声明一个未使用的变量。如果你需要,用它做点什么,升温就会消失(例如,将错误记录到txt文件中)

Sergio,这就是我所说的,当然所有实际的错误都应该记录下来。有时,由于已知的情况,需要捕获异常,您只需要恢复,而不需要实际处理异常,因为这是应用程序的正常流程。在这种情况下,您不应该让它坐在那里。是否有其他可用代币的列表?“真的不能谷歌$exception。@乔治,我添加了一个带有适当数据的链接。