Неверный номер строки в исключении Stacktrace - PullRequest
1 голос
/ 21 апреля 2011

У меня есть какой-то код с ошибками, и я использую трассировку стека, чтобы выяснить, что такое номер строки, но, похоже, он дает мне неправильный номер

Вот мой код

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 ]

6 голосов
/ 21 апреля 2011

Если вам особенно нужен объект StackTrace, а вы не просто хотите получить строку из e.StackTrace, измените вызов конструктора на:

Dim st As New StackTrace(e, True)

"st" теперь будет инициализироваться с источникомдетали, как вы ожидаете.

Подробнее см. http://msdn.microsoft.com/en-us/library/dsay49kt.aspx.

1 голос
/ 21 апреля 2011

Конструктор StackTrace (true) создает новую трассировку стека для этой точки в коде.

Используйте свойство .Stacktrace исключения.

1 голос
/ 21 апреля 2011

Почему вы не используете информацию из объекта Exception?

Catch e As Exception

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

End Try
0 голосов
/ 21 апреля 2011

Конечно, вы хотите StackTrace Исключения?Вы создаете новую трассировку стека в строке кода в обработчике исключений.

Вместо этого требуется e.StackTrace.

...