获得第一次机会异常会阻止我的应用

时间:2011-01-15 11:22:21

标签: vb.net visual-studio-2010 exception

当我的应用程序抛出异常时,我希望调试器停止运行并进入调试模式,但事实并非如此。相反,我只是在立即窗口中收到一条消息('第一次机会异常......'),程序继续运行,好像什么也没发生。但是,退出sub(抛出异常),因此不执行异常后的语句。由于这个sub使我的程序初始化,运行变得非常不稳定。

如何在抛出异常时告诉调试器停止执行?

(我使用VB 2010,并没有更改调试器的任何设置。)

更新:
感谢您及时回复。不幸的是,我仍然无法按照我喜欢的方式得到它。

  1. 在'Advenced compile options'页面上,我没有'Target CPU'。也许是因为我只有VB Express?
  2. 如果勾选Debug>中的'Thrown'复选框异常,即使我有一个异常的捕获,执行也会停止,我不希望这样。
  3. 到目前为止,我在32位上使用了VB 2008,一切正常,但是自从我搬到2010年64位后,我就无法做到正确。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

Debug + Exceptions,勾选“Common Language Runtime Exceptions”的Thrown复选框。调试器现在将在第一次机会通知时停止。

通常的原因是代码中的catch语句,可能是VB.NET On Error语句。或者64位调试器与Windows窗体交互中的错误。在它中断之后,使用Debug + Windows + Call stack并检查表单的Load事件处理程序是否在调用堆栈上。该错误导致未经诊断的情况下吞下未处理的异常。

要解决此问题,请使用“项目+属性”,“编译”选项卡,向下滚动,“高级编译选项”。将目标CPU设置更改为“x86”。这是VS2010项目btw的默认设置。您现在将使用32位调试器,它没有此问题。您可以使用编辑+继续。

答案 1 :(得分:1)

我知道这是一个旧帖子,但我希望它可以帮助别人..

我在表单启动时遇到了一个非常类似的问题。 我把我的代码放在"显示事件",而不是"加载事件"它解决了! 我的意思是我得到了预期的异常,我的代码不会默默地退出。

我知道它们是不同的事件,但对我来说它并没有做出任何改变。

BTW,我的环境:Win7 64位上的VB.net Express 2010

答案 2 :(得分:0)

要获取目标CPU选项,您必须在VS2010 express中选择专家设置。转到工具|选项并检查专家设置。