0

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

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

4

1 回答 1

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)

于 2012-11-15T15:11:48.437 回答