stacktrace异常中的行号错误

时间:2011-04-21 14:50:45

标签: asp.net vb.net exception stack-trace

我有一些错误的代码,我正在使用堆栈跟踪找出行号是什么,但它似乎给了我错误的数字

这是我的代码

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启动位置的行号,而不是导致异常的行号

有什么想法吗?

4 个答案:

答案 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。