如何使用try-catch获取代码的错误行号

8 浏览
0 Comments

如何使用try-catch获取代码的错误行号

我想要获取引发错误的代码行号。例如:

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();
    }
}

所以我们知道这段代码不起作用,它会抛出异常,引发错误的代码行号是:

int n = cmd.ExecuteNonQuery();

那么如何使用try-catch来获取该行号呢?我尝试使用StackTrace类,但它给出的行号是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());
    }
}

输出:

Line:0

更新:

通常错误代码行号是22,所以我需要获取那个数字。

谢谢

0