我想獲取導致錯誤的代碼行號。例如;如何使用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());
}
}
OUTPUT:
Line:0
更新:
通常的代碼錯誤行是22,所以我必須得到這個數字。
感謝
如果你處於'RELEASE'模式,行號(除其他之外)不再是堆棧跟蹤。在DEBUG模式下編譯的最簡單方法。如果它仍然不起作用,請檢查*項目屬性\高級\調試信息*中是否有完整的調試信息。 –
@JiBéDoublevé它處於調試模式,並且已完全調試 –
您的.pdb文件與所有其他文件位於同一目錄中嗎? –