2008-08-05 11 views
33

ASP.NET 1.1プロジェクトでは、常にGlobal.asaxを使用してすべてのエラーをキャッチしました。私はWindowsフォームのユーザーコントロールですべての例外をキャッチする同様の方法を探しています。これはホストされたIEコントロールになります。このようなことをするための適切な方法は何ですか?winformsコントロールのグローバル例外処理

+0

また、いくつかの落とし穴について[私の質問](http://stackoverflow.com/questions/944/unhandled-exception-handler-in-net-11)を見てください(カップルへのリンクホラーブログエントリのコーディング)。 – Ray

答えて

24

Windowsフォーム用のSystem.Windows.Forms.Application.ThreadExceptionイベントを処理する必要があります。この記事は本当に私を助けました:http://bytes.com/forum/thread236199.html

6

VB.NETを使用している場合は、非常に便利なApplicationEvents.vbを利用できます。このファイルは、VB.NET WinFormsプロジェクトで無料で提供され、unhandled exceptionsを処理するメソッドが含まれています。あなたはその後、ええ、それはApplication.ThreadExceptionを扱うだ、VB.NETを使用していない場合は、この気の利いたファイルを取得する

、それは「プロジェクトのプロパティ>>アプリケーション>>アプリケーションイベント」

です。

11

は、現在、私のWinFormsアプリで、私は上記のように、Application.ThreadException用のハンドラを持っているだけでなく、AppDomain.CurrentDomain.UnhandledException

ほとんどの例外はThreadExceptionハンドラを経由して到着したが、AppDomainのの1は、いくつかの私の経験で

+3

未処理の例外の両方の種類を取得する方法を示すMSDNのサンプルコード:[msdn](http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx) –

2

コードをも捉えていますMSDNから:http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

Sub Main() 
    Dim currentDomain As AppDomain = AppDomain.CurrentDomain 
    AddHandler currentDomain.UnhandledException, AddressOf MyHandler 

    Try 
    Throw New Exception("1") 
    Catch e As Exception 
    Console.WriteLine("Catch clause caught : " + e.Message) 
    Console.WriteLine() 
    End Try 

    Throw New Exception("2") 
End Sub 

Sub MyHandler(sender As Object, args As UnhandledExceptionEventArgs) 
    Dim e As Exception = DirectCast(args.ExceptionObject, Exception) 
    Console.WriteLine("MyHandler caught : " + e.Message) 
    Console.WriteLine("Runtime terminating: {0}", args.IsTerminating) 
End Sub 
3

グローバル例外を処理する...

Windowsアプリケーション

System.Windows.Forms.Application.ThreadExceptionイベント一般的に主な方法で使用される

。通常、Global.asaxファイルで使用さMSDN Thread Exception

Asp.Net

System.Web.HttpApplication.Errorイベント

を参照してください。一般的には、メインメソッドで使用MSDN Global.asax Global Handlers

コンソールアプリケーション

System.AppDomain.UnhandledExceptionイベント

を参照してください。参照してください。MSDN UnhandledException