在桌面应用程序中,我设置了一些简单的
如果有人想要codez(那里没什么有趣的):
Namespace My
Partial Friend Class MyApplication
' Thread exception handler. Handles all unhandled exceptions on UI thread.
Private Sub UIThreadException(sender As Object, e As ThreadExceptionEventArgs)
CustomErrorHandler.Handle(e.Exception, "[UIThreadException]")
End Sub
' Handle the UI exceptions by showing a dialog box, and asking the user whether
' or not they wish to abort execution.
' NOTE: This exception cannot be kept from terminating the application - it can only
' log the event, and inform the user about it.
Private Sub CurrentDomain_UnhandledException(sender As Object,
e As UnhandledExceptionEventArgs)
Try
Dim ex As Exception = CType(e.ExceptionObject, Exception)
CustomErrorHandler.OnUnhandled(ex)
Catch exc As Exception
MsgBox(exc.ToString(), vbCritical, "Last resort error printout")
End Try
End Sub
End Class
End Namespace
有时,当我从Form1
的{{1}}事件处理程序中抛出异常时会有所不同:
ButtonOK_Click(...)
)启动时,app.exe
按预期调用UIThreadException()
)内部启动时,app.vshost.exe
在同一场景中称为 (代码中的位置与以前相同,相同的数据),忽略CurrentDomain_UnhandledException()
处理程序因此,在独立的exe中,所有工作都可靠,但在调试会话期间,在相同的情况下陷入未处理的异常非常烦人。
我可以在Visual Studio 2012和2015中观察到相同的行为。如果在简单的示例上进行测试,它在调试会话中也始终按预期工作。如果代码更复杂(嵌套调用中抛出异常等),则会忽略UI线程异常处理程序。
您是否有人能够观察到同样的问题并找到解决方案?
答案 0 :(得分:0)
一些没有经验的同事将SQL处理放入OnLoad事件处理程序而不是构造函数或OnShow事件处理程序。 And this is where troubles begin.是的,我曾经去过那里。