我想弄清楚为什么会这样。在我的vb.net应用程序中,我在ApplicationEvents.vb中设置了一个全局处理程序,我认为它只会拾取任何未处理的异常,尽管它会拾取我的应用程序中发生的每个异常,无论它们是否使用try catch块处理。这是我在applicationevents中的代码
Private Sub MyApplication_UnhandledException(ByVal _
sender As Object, ByVal e As _
Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) _
Handles Me.UnhandledException
e.ExitApplication = _
MessageBox.Show(e.Exception.Message & _
vbCrLf & "The application has encountered a bug, would you like to Continue?", "An Error has occured.", _
MessageBoxButtons.YesNo, _
MessageBoxIcon.Question) _
= DialogResult.No
End Sub
在我的应用程序的其余部分中,我设置了正常的try catch块,如下所示:
Try
Catch ex as exception
End Try
谁能告诉我为什么会这样?
答案 0 :(得分:1)
我创建了一个VB项目。 ApplicationEvents.vb看起来像这样:
Partial Friend Class MyApplication
Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
MsgBox("Unhandled exception")
End Sub
End Class
表格的代码是:
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim a As Integer
Dim b As Integer
Try
a = a / b
Catch ex As Exception
MsgBox("Handled exception")
End Try
End Sub
End Class
重要的是,如果你没有在表单中捕获错误,可能不会触发一般错误处理程序(取决于Visual Studio上的设置,我不记得哪一个)。可以肯定的是,执行您的项目而不进行调试(CTRL + F5而不是F5)