在空的catch块中调试异常

8

我正在调试一款生产应用程序,其中有大量的空catch块 叹气

try {*SOME CODE*}
catch{}

当调试器在IDE中命中catch时,有没有一种方法可以查看异常信息?


抱歉,我应该表述得更清楚 - 我无法修改代码 - 我只是试图追踪一些错误。 - Rikalous
7个回答

11

在Visual Studio中,在catch块内查看IDE的本地区域,您将看到类似于$EXCEPTION的内容,其中包含刚刚捕获的异常的所有信息。


你需要手动将变量 $exception 添加到监视窗口中。 - Rikalous

3

在 Visual Studio 中,选择“调试” -> “异常” -> 在“抛出”列中勾选“公共语言运行时异常”复选框。


1

你可以编写

catch (Exception ex) { }

然后当异常在这里被抛出并捕获时,您可以检查 ex。


1
不可能,因为那个代码块的意思是“我不关心异常”。你可以使用以下代码进行全局查找和替换以查看异常。
catch {}

使用以下内容

catch (Exception exc) {
#IF DEBUG
    object o = exc;
#ENDIF
}

这样做的作用是保留您当前的“不执行任何操作”的生产代码捕获,但在DEBUG模式下运行时,它将允许您在对象o上设置断点。


1
如果您正在使用Visual Studio,则有一个选项可以在抛出异常时中断程序,无论它是否未处理。当异常被抛出时,异常助手(可能仅适用于VS 2005及更高版本)将告诉您它是什么类型的异常。
按下Ctrl+Alt+E键,打开异常选项对话框并启用此功能。

这是我最终使用的机制 - 我找不到像AdamB描述的查看隐藏异常的方法。 - Rikalous
虽然小心你所希望的。如果你在MVC应用程序中这样做,你会惊讶地发现每个请求都会捕获多少异常。 - Casey

0

你不能在那个点添加一个异常并检查它吗?


0

@sectrean

那不起作用,因为如果没有任何东西使用它,编译器会忽略异常 ex 的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接