我的应用程序中有以下代码,它处理Load
中的System.Windows.Forms.Form
事件:
Private Sub frmBillingPoller_Load(ByVal eventSender As System.Object, ByVal eventArgs As EventArgs) Handles MyBase.Load
Throw New Exception("I should be unhandled")
End Sub
当我在方法签名上放置断点时,我可以看到调用堆栈中的任何地方都没有Try...Catch
语句。据我所知,VB.NET没有任何属性或设置忽略未处理的异常(虽然它不会让我感到惊讶)。
那么为什么在这种特殊情况下异常不会停止执行?
答案 0 :(得分:3)
我建议你阅读这篇文章,解释当x64位操作系统上的form_load事件有异常并且你的应用程序是为AnyCPU编译时会发生什么(意味着你的代码以64位代码执行)
Visual Studio debugger fails to catch unhandled exception for a Windows Form or WPF Application
用我非常简单的术语来说。在上面的场景中,OS64捕获异常并且未通知调试器。所以你没有看到任何异常,但是form_load事件停止运行 如果在异常之后编写其他代码,如果它在try / catch块中,您将看到catch块代码未执行。控件返回到您显示表单的行。
答案 1 :(得分:0)
将项目定义更改为编译AnyCPU或显式编译为x86
如果你需要在x64中构建,那么一种方法是使用菜单Debug - > Excel并检查所有'Thrown'复选框。这使程序暂停所有异常,即使它们是在Try..Catch块中处理的。