How to get error line number of code using try-catch

c#, exception

Solution

Try this simple hack instead:

First Add this (extension) class to your namespace(most be toplevel class):

public static class ExceptionHelper
{
    public static int LineNumber(this Exception e)
    {

        int linenum = 0;
        try
        {
            //linenum = Convert.ToInt32(e.StackTrace.Substring(e.StackTrace.LastIndexOf(":line") + 5));

            //For Localized Visual Studio ... In other languages stack trace  doesn't end with ":Line 12"
            linenum = Convert.ToInt32(e.StackTrace.Substring(e.StackTrace.LastIndexOf(' ')));

        }


        catch
        {
            //Stack trace is not available!
        }
        return linenum;
    }
}

And its done!Use LineNumber method whenever you need it:

try
{
//Do your code here
}
catch (Exception e)
{
int linenum = e.LineNumber();
}

Problem

I want to get line number of code which cause error. For example; ``` static void Main(string[] args) { using (SqlConnection conn = new SqlConnection(bagcum)) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "DONTINSERT into GIVEMEERROR(CamNo,Statu) values (" + 23 + "," + 0 + ")"; conn.Open(); int n = cmd.ExecuteNonQuery(); } } ``` so As we know that code doesn't work, it will throw exception Line number of code which is: ``` int n = cmd.ExecuteNonQuery(); ``` So how can get that line number of using `try-catch`? I tried using a `StackTrace` class but it gives line number as 0: ``` static void Main(string[] args) { try { using (SqlConnection conn = new SqlConnection(bagcum)) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "DONTINSERT into GIVEMEERROR(CamNo,Statu) values (" + 23 + "," + 0 + ")"; conn.Open(); int n = cmd.ExecuteNonQuery(); } } catch (Exception ex) { System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true); Console.WriteLine("Line: " + trace.GetFrame(0).GetFileLineNumber()); } } ``` OUTPUT: ``` Line:0 ``` Update: Usually error line of code is 22 so I have to get that number. Thanks

Original source