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 の設定によっては、どのエラーか覚えていません)。確かに、プロジェクトをデバッグせずに実行してください (F5 ではなく CTRL+F5)。

于 2012-11-15T15:11:48.437 に答える