未处理异常的全局错误捕获程序正在拾取所有异常

时间:2012-11-15 14:30:27

标签: .net vb.net visual-studio-2010 error-handling

我想弄清楚为什么会这样。在我的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

谁能告诉我为什么会这样?

1 个答案:

答案 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)