Visual Studio:如何打破处理异常?

我希望Visual Studio在处理异常发生时中断(即我不只是想看到“第一次机会”消息,我想调试实际的异常)。

例:我希望调试器在异常时中断:

try
{
System.IO.File.Delete(someFilename);
}
catch (Exception)
{
//we really don't care at runtime if the file couldn't be deleted
}

我遇到了Visual Studio的这些注释。NET:

在VS.NET中进入调试菜单>> “例外……”>>“通用语言 运行时异常“>>”系统和 选择“系统。得到NullReferenceException " < / p >

2)在对话框的底部 是“当抛出异常时:” 组中,选择“闯入” 调试器" < / p > 3)运行你的场景。当 异常抛出时,调试器将 停止并用对话框通知您 比如: 系统类型的异常。得到NullReferenceException” 被抛出。 [Break] [Continue]"

. < p >(打破)。这会让你 导致 问题。< / p >

但是它们不适用于Visual Studio 2005(在调试菜单上没有异常选项)。

有没有人知道在Visual Studio的“当抛出异常时”组框中,“进入调试器”选项在哪里找到这个选项对话框?

更新:问题是我的Debug菜单没有Exceptions项。我自定义菜单手动添加它。

161984 次浏览

VS2005中有一个“例外”窗口…调试时尝试Ctrl+Alt+E,并单击要停止的异常的“抛出”复选框。

打开解决方案后,转到“调试- Windows -异常设置(Ctrl+Alt+E)”菜单选项。从那里你可以选择中断User-unhandled异常。

编辑:我的实例是用c# "profile"也许其他档案就没有了?

检查使用调试器管理异常页,它解释了如何设置。

本质上,以下是(在调试期间)的步骤:

  1. 在“调试”菜单上,单击“例外”。

  2. 在“异常”对话框中,为整个异常类别选择“抛出”,例如“公共语言运行时异常”。

    或者,

    展开某个异常类别的节点,例如“公共语言运行时异常”,并对该类别中的特定异常选择“抛出”

我使用的一种技巧如下所示。定义一个全局变量,可以用于一个或多个try catch块,这取决于你要调试的内容,并使用以下结构:

if(!GlobalTestingBool)
{
try
{
SomeErrorProneMethod();
}
catch (...)
{
// ... Error handling ...
}
}
else
{
SomeErrorProneMethod();
}

我发现这在测试方面给了我更多的灵活性,因为仍然存在一些我不希望IDE中断的异常。

在线文档似乎有点不清楚,所以我只是做了一个小测试。在“异常”对话框中选择“在抛出时中断”会导致程序在任何异常(已处理或未处理)时中断。如果您只想中断已处理的异常,那么惟一的方法似乎是遍历代码并在所有已处理的异常上设置断点。这似乎有点过分,所以在处理异常时最好添加一条调试语句。然后,当您看到输出时,您可以在代码中的这一行设置断点。

我花了一段时间才找到期望设置的新地方,因此有了一个新的答案。

自Visual Studio 2015你可以在异常设置窗口(调试->Windows->异常设置)中控制哪些异常要停止。快捷方式仍然是Ctrl-Alt-E

处理自定义异常的最简单方法是选择“不在此列表中的所有异常”。

以下是英文版的截图:

enter image description here

以下是德国版的截图:

enter image description here

从Visual Studio 2015及以后,你需要进入“异常设置”对话框(Ctrl+Alt+E),并选中“公共语言运行时异常”(或你想要的特定异常,即ArgumentNullException),使其在处理异常时中断。

< p >步骤1 Step 1 步骤2 步骤2 < / p >