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: 244

Filed under:
|

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

Related posts about vb.net

Related posts about desktop-application