How to use Stacktrace to return Error Line Number in vb.net

user1836775 picture user1836775 · Nov 19, 2012 · Viewed 42.1k times · Source

I am trying to create some sort of error catching method that will return the error line number. We have an abort email that is sent out when a process aborts that gives us the err.number and err.description but I would like to know where is actually errors out.

I know you can do the following:

1: code here
2: code here
3: code here

etc. and use ERL to get the number but it would be tedious to type each line out like that.

Is there either a way to automatically do this or would it be easier to use Stacktrace? If Stacktrace is better could you please show me an example?

Answer

Mauricio picture Mauricio · Oct 13, 2013

I have adapted an example from other forum, in my case, I wasn't getting the line number where the error was caused, so I started playing around and found a solution, the code is as follows:

Public Class Form1
    Private Sub a2()
        Dim b As Integer = 0
        Dim a As Integer = 1 / b
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
        Try
            a2()
        Catch ex As Exception
            Dim st As New StackTrace(True)
            st = New StackTrace(ex, True)
            MessageBox.Show("Line: " & st.GetFrame(0).GetFileLineNumber().ToString, "Error")
        End Try
    End Sub
End Class

In this example, line 4 will trigger the error exception, but once I applied the principle in a real life application, line was 0, so I started playing with the index in the GetFrame property, it ranges from 0 to 4, when I put 4 in the object, EUREKA, I got the line number causing the problem.