Building A True Error Handler
        Posted  
        
            by Kevin Pirnie
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Kevin Pirnie
        
        
        
        Published on 2010-06-04T20:27:38Z
        Indexed on 
            2010/06/05
            13:12 UTC
        
        
        Read the original article
        Hit count: 298
        
vb.net
|desktop-application
I am trying to build an error handler for my desktop application. The code Is in the class ZipCM.ErrorManager listed below.
What I am finding is that the outputted file is not giving me the correct info for the StackTrace.
Here is how I am trying to use it:
Try
     '... Some stuff here!
     Catch ex As Exception
            Dim objErr As New ZipCM.ErrorManager
            objErr.Except = ex
            objErr.Stack = New System.Diagnostics.StackTrace(True)
            objErr.Location = "Form: SelectSite (btn_SelectSite_Click)"
            objErr.ParseError()
            objErr = Nothing
        End Try
Here is the class:
    Imports System.IO
Namespace ZipCM
    Public Class ErrorManager
        Public Except As Exception
        Public Location As String
        Public Stack As System.Diagnostics.StackTrace
        Public Sub ParseError()
            Dim objFile As New StreamWriter(Common.BasePath & "error_" & FormatDateTime(DateTime.Today, DateFormat.ShortDate).ToString().Replace("\", "").Replace("/", "") & ".log", True)
            With objFile
                .WriteLine("-------------------------------------------------")
                .WriteLine("-------------------------------------------------")
                .WriteLine("An Error Occured At: " & DateTime.Now)
                .WriteLine("-------------------------------------------------")
                .WriteLine("LOCATION:")
                .WriteLine(Location)
                .WriteLine("-------------------------------------------------")
                .WriteLine("FILENAME:")
                .WriteLine(Stack.GetFrame(0).GetFileName())
                .WriteLine("-------------------------------------------------")
                .WriteLine("LINE NUMBER:")
                .WriteLine(Stack.GetFrame(0).GetFileLineNumber())
                .WriteLine("-------------------------------------------------")
                .WriteLine("SOURCE:")
                .WriteLine(Except.Source)
                .WriteLine("-------------------------------------------------")
                .WriteLine("MESSAGE:")
                .WriteLine(Except.Message)
                .WriteLine("-------------------------------------------------")
                .WriteLine("DATA:")
                .WriteLine(Except.Data.ToString())
            End With
            objFile.Close()
            objFile = Nothing
        End Sub
    End Class
End Namespace
What is happenning is the .GetFileLineNumber() is getting the line number from 'objErr.Stack = New System.Diagnostics.StackTrace(True)' inside my Try..Catch block. In fact, it's the exact line number that is on.
Any thoughts of what is going on here, and how I can catch the real line number the error is occuring on?
© Stack Overflow or respective owner