2009-09-09 10 views
0

予期しないエラーを表示するためのグローバルエラーハンドラを持つWindowsフォームアプリケーションがあります。 >すべての未処理の例外にエラーが発生しているデフォルト値に設定例外オプション - VS2008で グローバルエラーハンドラを使用したWinformsアプリケーションの例外処理に関する問題

Namespace My 

    Class MyApplication 

     Delegate Sub ProcessParametersDelegate(ByVal sender As Object, ByVal args() As String) 

     Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 

      Dim ErrorText As String = e.Exception.Message & ", " & e.Exception.StackTrace 

      Try      
       MessageBox.Show("Global Error Handler: An unhandled error occurred. It will be copied to your clipboard upon OKing this message: " & ErrorText) 
       Clipboard.SetText(ErrorText) 
      Catch ex As Exception 

      End Try 

     End Sub 

    End Class 

End Namespace 

は、私は私のデバッグを持っています。

私はいくつかの問題があります。

1)同じ展開コードのために、私は時々表示されたスタックトレースのエラーメッセージに行番号を取得し、時にはエラーメッセージは、私が書いたソースコードが含まれていても、しないでください参照されるバイナリではなく、プロジェクトはDEBUG構成でコンパイルされます。

2)エラーが発生したときに妙にトレイに最小化したアプリケーション(I薄く、誰もがW/O私の多くのコードを投稿この問題を診断できることはほとんどありませんが、私はとにかくそれを言及します)

3 )意図的にエラーを発生させようとすると、たとえばグローバルエラーハンドラでテストするために0で割ることで、グローバルエラーハンドラにジャンプするのではなく、対話型デバッガからダイアログエラーメッセージが表示されます。投稿した以上にそれがあります)。グローバルイベントハンドラの実行をトリガして強制する方法はありますか?

答えて

2

1)

あなたのスタックトレースの一部が欠落している場合は、それがためにあなたが内部の例外を無視しているかの可能性があります。

の代わりに:

Dim ErrorText As String = e.Exception.Message & ", " & e.Exception.StackTrace 

用途:

Dim ErrorText As String = e.Exception.ToString() 

また、あなたの.pdbファイルがあなたの.exeファイルと同じ場所にデプロイされることを確認してください。

2)わかりません。

3)

デバッガでMyApplication_UnhandledExceptionをステップ実行するには、次の

デバッグ - >

デバッグをデバッグなしで開始 - >

「アタッチでアプリ名を探すプロセスにアタッチ「処理する」ウインドウを開き、それにアタッチします。あなたのブレークポイントがヒットします。

私は例外を強制するために、これを使用したいが、他の多くのオプションがあります:3 OUTA

MessageBox.Show(Nothing.ToString()) 
+0

あなたの答えは良いと思ったが、うまくいかなかった。私は指示に従い、ブレークポイントは決して打たれませんでした。例外ハンドラは、StackTraceメソッドとアドバイスされた.ToStringメソッドを使用して行番号情報を表示しましたが、私はこの提案はおそらく良いと考えています。 – ChadD

+0

あなたの指示に従った私のビデオ2分 – ChadD

+0

URLを投稿するのを忘れました:http://screencast.com/t/ZPv00EOrCnTl – ChadD

0

PT 3について:

例外のためのあなたの唯一の関連するハンドラはグローバルな例外ハンドラの場合は、デバッガが例外として扱い、「未処理の。」基本的には、グローバルイベントハンドラを実行することはできません。

+0

1は、賞を主張するには十分です。 – ChadD

+0

えええええええええええええええええええええええええええええええええええええええええええとください。不正な機能 – ChadD

関連する問題