Моя текущая установка Visual Studio 2015 не позволит мне бросать необработанное исключение при запуске кода из среды IDE. Я хочу, чтобы реализовать свой необработанное код исключения, но мой код:Как отлаживать обработку необработанных исключений
Private Sub btnTest_Click(sender As System.Object, e As System.EventArgs) Handles btnTest.Click
Throw New System.Exception("An unhandled test exception has occurred.")
End Sub
работает только во время нормального выполнения, не тогда, когда код выполняется в среде IDE.
Как я могу отладить мой необработанный код исключения в среде IDE?
Я смотрел в Debug, Windows, Exception Settings, но я не вижу способа делать то, что хочу. Есть ли еще один глобальный параметр, который позволит исключить необработанное исключение без использования IDE для исключения?
Я использую ApplicationsEvents.vb зацепить событие:
Namespace My
' The following events are available for MyApplication:
'
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
Partial Friend Class MyApplication
Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
ExpLog.LogUnhandledException(e, sender)
e.ExitApplication = Not ExpLog.InformUser
End Sub
End Class
End Namespace
Решение создать тестовый окурок, который выполнял код, который был вызван обработчиком:
Private Sub Button6_Click(sender As System.Object, e As System.EventArgs) Handles btnMisc_Throw.Click
If ExpLog.InformUser() Then
MsgBox("Continue")
Else
MsgBox("End Program")
End If
ExpLog.LogMsgBox(New System.Exception("test unhandled exception"), "test LogMsgBox()",,, "programmer note")
End Sub
Это не позволяет тестировать обработчик, но выполняет код, который вызывает обработчик. Глядя на некоторых старых комментариев я понял это пять + лет назад ... :(
Мой 'bntTest_Click' код находится на ребенка форме внутри родительской формы MDI. – rheitzman
После видя ваше редактирование в ApplicationEvents, это отличается от того, как я добавил обработчик. Я пробовал ваш код и подтверждаю, что он не работает. Попытайтесь сделать это, если это возможно. – djv
Я попытался выставить исключение теста из контейнера MDI (уровень формы), и это тоже не сработало. Ваш способ работал в автономной форме, но мне нужно зафиксировать необработанные события на уровне приложения, поскольку у меня есть сочетание автономных и MDI-дочерних форм. – rheitzman