5

未処理の例外を WinForms アプリケーションのログ ファイルに記録して、例外の原因を簡単に特定するにはどうすればよいですか?

4

3 に答える 3

4

まず、未処理の例外をキャッチする必要があります。このコードの VB.Net バージョンをメイン プログラムに追加します。

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += ApplicationThreadException;
AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler;

次に、イベント ハンドラーを追加します。

static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
    Exception ex = e.ExceptionObject as Exception;
    if (ex != null)
    {
       Console.WriteLine("Unhandled exception: {0}", e.Exception);      
    }
}

static void ApplicationThreadException(object sender, ThreadExceptionEventArgs e)
{
    Console.WriteLine("Unhandled application exception: {0}", e.Exception);
}

次に、選択したログ方法でエラーをログに記録できます.. (C# コードで申し訳ありません!)

于 2012-10-16T10:30:24.990 に答える
2

Sub Mainまたはスタートアップ フォームのコンストラクタに、次のコードを追加します。

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler

次に、次のメソッドを にSub Main追加するか、他のクラス/フォームに共有メソッドとして追加します。

Public Sub UnhandledExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
    If TypeOf e.ExceptionObject Is Exception Then
        Dim ex As Exception = CType(e.ExceptionObject, Exception)
        ' Log the exception
    End If
End Sub
于 2012-10-16T11:00:21.307 に答える
1

何かをログに記録したい場合は、Nlog を使用します。これは、ログ メッセージをファイルや電子メールなどに書き込みます。リンク: http://nlog-project.org/

ドキュメント: https://github.com/nlog/nlog/wiki/Tutorial

次に、これを簡単に行うことができます:

Private Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
try
'do stuff
catch
logger.fatal("Messagedescription")
end try

これにより、nlog.config ファイルで指定されたファイルにメッセージが自動的に書き込まれます。ログを表示するには、任意のエディターまたは logExpert を使用できます。

于 2012-10-16T11:38:29.163 に答える