1

開発者以外のデザインパターンを作成しており、UnhandledExceptionイベントでcatchallエラーハンドラーを組み込んでいます。エラーをログファイルに書きたいのですが、ログファイル名にタイムスタンプが入っているので、実行するたびに変わります。ハンドラーがログファイル名の文字列を受信またはアクセスする方法はありますか?

助けてくれてありがとう

4

1 に答える 1

2

通常、UnhandledExceptionイベントハンドラーは、スタートアップコードを含むクラスにあります。したがって、ログファイルの名前を含む共有パブリック変数をこのクラスで定義することを妨げるものは何もありません。構成ファイルからの読み取りの開始時にその値を初期化できます。次に、イベント内でその変数を使用してログファイルを開き、情報を書き込むことができます。

編集:あなたのシナリオでは、この擬似コードを試すことができます

Partial Friend Class MyApplication

    ' the name for the log file
    Public logName As String

    Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
        Dim ex As Exception = e.Exception
        If Not ex Is Nothing Then
            MessageBox.Show(ex.Message)
            Using sw = new StreamWriter(My.MyApplication.logName)
               .....
            End Using
        End If
    End Sub
End Class

最初のフォームでこの呼び出しを追加してlogNameを定義します

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    My.Application.logName = "C:\temp\text.txt"
    ' as test
    Throw New Exception("This is an unhandled exception")
End Sub
    End Sub
于 2012-09-24T21:11:58.420 に答える