UI 线程异常处理程序在调试会话期间被忽略

UI thread exception handler is ignored during debug session

在桌面应用程序中我设置了琐碎的

如果有人想要代码(那里没有什么有趣的):

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

有时,当我从 Form1ButtonOK_Click(...) 事件处理程序中抛出异常时会有所不同:

所以在独立的 exe 中,一切都可靠地工作,但是在调试会话期间,在相同的情况下陷入未处理的异常是非常烦人的。

我可以在 Visual Studio 2012 年和 2015 年观察到相同的行为。如果在简单的示例上进行测试,它在调试会话中也始终按预期工作。如果代码更复杂(在嵌套调用中抛出异常等),那么 UI 线程异常处理程序将被忽略。

你们中有人能够观察到同样的问题并找到解决方案吗?

在OnLoad()事件中抛出了异常(我没有注意到)。

一些没有经验的同事将 SQL 处理放入 OnLoad 事件处理程序而不是构造函数或 OnShow 事件处理程序。 是的,我去过那里