代码之家  ›  专栏  ›  技术社区  ›  George Mauer

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

  •  2
  • George Mauer  · 技术社区  · 15 年前

    这是一个编译器警告,通常不希望代码中有未使用的变量。因此,下面将生成一个警告,因为e未使用

    try {
      throw new InvalidOpreationException();
    }
    catch(Exception e) {
    }
    

    正确的方法是不给异常命名,除非您打算使用它:

    try {
      throw new InvalidOpreationException();
    }
    catch(Exception) {
    }
    

    但是这种“正确”的方法在调试时可能会很麻烦。您可以在catch中设置断点,但除非停止应用程序、命名异常、重新编译并重新创建错误,否则您不知道为什么会出现断点。至少可以说,这很烦人。

    更重要的是,这个异常仍然存在,只是在这个范围内没有一个明确的名称。有没有办法接近它?

    2 回复  |  直到 15 年前
        1
  •  16
  •   JaredPar    15 年前

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

    我已经用Visual Studio 2008及更高版本验证了这项工作。

    编辑

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

        2
  •  0
  •   Sergio    15 年前

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