如何使用try-catch获取代码的错误行号
如何使用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,所以我需要获取那个数字。
谢谢