【问题标题】:Why doesn't Visual Studio 2010 break on an unhandled exception?为什么 Visual Studio 2010 不会因未处理的异常而中断?
【发布时间】:2011-05-31 22:42:09
【问题描述】:

当我的程序中抛出异常并且未处理时,我希望调试器能够中断我的程序并向我显示问题所在。这不会发生。相反,我的程序只是退出,调试停止。

如果我查看调试输出,我可以看到我的异常:

类型的第一次机会异常 'System.NullReferenceException' 发生在 System.dll 中

我正在使用 Visual Studio 2010、Visual Basic 编写一个简单的 WinForms 应用程序。在这种情况下,代码无关紧要......它发生在我到目前为止看到的 any 异常中。

我在网上阅读了很多关于如何处理 Debug 菜单并单击 Exceptions 并启用“未处理用户异常中断”的信息,但我没有看到这一点选项。我认为这个建议适用于 VS2008,不再适用。

我还应该注意,我没有运行任何单元测试。我从来没有设置它们。但是,我读到单元测试员可能正在吞下我的异常?

请告诉我如何更改 Visual Studio 的行为,以便我可以追踪这些未处理的异常。

感谢您的宝贵时间。

【问题讨论】:

  • 您运行的是 64 位版本的 Windows 吗?
  • @Cody,不,我使用的是 Windows XP SP3,32 位。

标签: visual-studio-2010 exception-handling debugging


【解决方案1】:

我有同样的问题。我打开了异常对话框并单击了“将列表恢复为默认设置”按钮,现在它正确地中断了未处理的异常。

从 2013 年升级可能存在错误。

【讨论】:

  • 在我的例子中,这是 Visual Studio 2010,但很高兴知道它在以后的版本中得到了修复。
【解决方案2】:

该项目可能不在菜单中,您可以通过自定义菜单并将该项目添加到调试菜单来解决此问题。

您还应该能够使用 CTRL + ALT + E 进入例外菜单

您需要勾选公共语言运行时异常 (CLR) 的“抛出”列中的复选框

【讨论】:

  • 谢谢 Sohnee。为了澄清,我在调试菜单上看到了 Exceptions,并且可以将其拉起。我看到的只是 C++、CLR、管理调试助手等选项。搜索用户任何东西都没有任何价值。
  • 您需要勾选公共语言运行时异常 (CLR) 的“抛出”列中的框。这将确保您打破所有错误。我会将这个细节添加到答案中。
  • @Sohnee,现在可以了,谢谢。这也会中断处理的异常吗?如果是这样,是否有可能让它仅在未处理的异常时中断?
  • 第二列是未处理的异常 - 它通常默认勾选...虽然如果你没有看到这个选项抛出异常,你可能会发现有一个 try / catch更进一步。
  • 如何设置 default 设置,哪些异常会在抛出时中断?
猜你喜欢
  • 2018-04-07
  • 2013-06-02
  • 1970-01-01
  • 2019-10-06
  • 2012-10-16
  • 2012-01-02
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
相关资源
最近更新 更多