2012-05-09 4 views
4

私はVB.Netでアプリケーションを作成しました。しかし、起動時にクラッシュするユーザーもいます。つまり、「プログラムを閉じる」ボタンを1つだけ押すだけで、「このプログラムは正しく動作しませんでした」という問題です。アプリが読み込まれたときに多くのことが起こっているので、問題の原因を知ることは可能でしょうか?アプリケーションクラッシュイベントをキャッチ

答えて

5

プロジェクトのプロパティで[アプリケーションフレームワーク]が有効になっている場合は、[アプリケーション]プロジェクトプロパティページの[アプリケーションイベントの表示]ボタンをクリックします。その後、イベントハンドラを追加:アプリケーション・フレームワークを使用していない場合

Partial Friend Class MyApplication 
    Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 
     ' ... 
    End Sub 
End Class 

を、あなたはあなたの全体のMain方法の周りのtry catchブロックを置く必要があります。ただし、それはプライマリスレッドで発生する例外をキャッチします。アプリケーションがマルチスレッドである場合、あなたはこのような方法で作成することにより、すべてのスレッドからの例外を処理することができます

Public Sub UnhandledExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs) 
    ' ... 
End Sub 

をしてから、このようなあなたの現在のドメインのUnhandledExceptionイベントにそれを添付:

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler 

そのイベントハンドラは、現在のスレッドに関係なく、ドメイン内のどこからでも未処理の例外がすべて呼び出されます。

+0

ありがとうSteveDog。今、エラーを見るために手を加えられない例外を強制することはありますか? – theRonnie

+0

私はあなたの質問が何であるか分かりません。例外がスローされ、未処理の場合は、MyApplication_UnhandledExceptionハンドラーがそれを受け取る必要があります。例外ハンドラで処理されない他のスレッドや何かで未処理の例外が発生する可能性がありますが、UIスレッドでスローされたものはそのハンドラによって自動的に捕捉されるはずです。 –