C#:在catch中调试时,是否可以获得非显式声明的异常?

Geo*_*uer 2 c# debugging visual-studio

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

try {
  throw new InvalidOpreationException();
}
catch(Exception e) {
}
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是除非您要使用它,否则不要给该例外命名:

try {
  throw new InvalidOpreationException();
}
catch(Exception) {
}
Run Code Online (Sandbox Code Playgroud)

但是这种"正确"的做事方式在调试时可能会很麻烦.您可以在catch中设置断点,但除非您停止应用程序,命名异常,重新编译并重新创建错误,否则您将不知道为什么到达那里.至少可以说这很烦人.

踢球者是该异常仍然存在,它在这个范围内没有明确的名称.有什么方法可以访问它吗?

Jar*_*Par 16

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

我已经验证了这适用于Visual Studio 2008及更高版本.

编辑

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