错误行号

问题描述:

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

这里是我的代码

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 

这似乎给我在堆栈跟踪开始,而不是什么原因造成的除外

任何想法的行号的行号?

+2

为什么不使用异常附带的堆栈跟踪? – 2011-04-21 14:57:25

如果你特别想堆栈跟踪的对象,不只是想从e.StackTrace字符串,然后改变你的构造函数调用;

Dim st As New StackTrace(e, True) 

现在将根据您的预期使用源细节初始化“st”。详情请参阅http://msdn.microsoft.com/en-us/library/dsay49kt.aspx

当然你想要异常的StackTrace?您正在异常处理程序的代码行中创建一个新的堆栈跟踪。

你想要e.StackTrace来代替。

构造函数StackTrace(true)在代码中为此点创建一个新的堆栈跟踪。

使用.Stacktrace属性的例外。

为什么不使用Exception对象的信息?

Catch e As Exception 

    Response.Write(e.StackTrace) 
    Response.Write(" Method: " & e.TargetSite) 
    Response.Write(" File: " & e.Source) 

End Try 
+0

这给了我完整的StackTrace,但我只想要行号和文件 – 2011-04-21 15:40:28