我有一些错误的代码,我正在使用堆栈跟踪找出行号是什么,但它似乎给了我错误的数字
这是我的代码
Try
Dim query As String = "Select * from table"
Dim ds As DataSet = data.db(query)
Catch e As Exception
Dim st As New StackTrace(True) 'This is the line number it gives me'
Dim sf As StackFrame = st.GetFrame(0)
Response.Write(" Method: " & sf.GetMethod().Name)
Response.Write(" File: " & sf.GetFileName())
Response.Write(" Line Number: " & sf.GetFileLineNumber().ToString())
End Try
它似乎给出了StackTrace启动位置的行号,而不是导致异常的行号
有什么想法吗?
答案 0 :(得分:6)
如果您特别需要StackTrace对象,并且不仅仅想要来自e.StackTrace的字符串,那么请将构造函数调用更改为;
Dim st As New StackTrace(e, True)
“st”现在将根据您的预期使用源详细信息进行初始化。
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/dsay49kt.aspx。
答案 1 :(得分:1)
StackTrace(true)构造函数在代码中为此点创建一个新的堆栈跟踪。
使用例外的.Stacktrace
属性。
答案 2 :(得分:1)
为什么不使用Exception对象中的信息?
Catch e As Exception
Response.Write(e.StackTrace)
Response.Write(" Method: " & e.TargetSite)
Response.Write(" File: " & e.Source)
End Try
答案 3 :(得分:0)
当然你想要Exception的StackTrace吗?您正在异常处理程序的代码行中创建一个新的堆栈跟踪。
你想要e.StackTrace。