有没有办法将额外的数据传递给MyApplication_UnhandledException事件处理程序?

时间:2012-09-24 21:01:58

标签: vb.net design-patterns .net-3.5

我正在为非开发人员创建一个设计模式,并且我将一个catch all错误处理程序与UnhandledException事件结合在一起。我想将错误写入日志文件,但日志文件名中包含时间戳,因此每次运行时都会更改。我的处理程序有没有办法接收或访问日志文件名字符串?

感谢您的帮助

1 个答案:

答案 0 :(得分: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
相关问题