Проблема с Throw в asp.net - PullRequest
       35

Проблема с Throw в asp.net

2 голосов
/ 14 апреля 2011

Ниже, почему Throw не поддерживает мой исходный номер строки?
Если я запускаю DerivedPage, мой файл журнала отображает ошибку как строку 7.
Разве это не должно сказать строку 4?Это имело бы смысл, если бы у меня было Throw ex, но у меня нет.
Разве Throw само по себе не должно просто отбрасывать и выдавать ошибку?

Если я удаляю Try...Catch полностью заблокировать в DerivedPage, тогда мой файл журнала правильно перечисляет 3 в качестве строки ошибки, но я не могу записать какую-либо информацию в случае ошибки.

Что я могу сделать, чтобы сохранить свой DerivedPage, и до сих пормой журнал сохраняет правильный номер строки?

Public Class DerivedPage Inherits BasePage
 Page_Load(o,e)
   Try
      Dim a = 3 -"a"
   Catch ex As Exception
      log.Info(...)
      Throw
   End Try
End Class

базовая страница:

Public Class BasePage
 Protected Overrides Sub OnError(e)
   MyBase.OnError(e)
   log.Error(Me.GetType(), Server.GetLastError)
 End Sub
End Class

EDIT : log.Error выводит InnerException, если он существует.Это в этом случае.Однако трассировка стека для InnerException не содержит номер строки, только сведения об исключении.

Ответы [ 3 ]

0 голосов
/ 14 апреля 2011

Существует метод, который вы можете реализовать, который даст вам правильный номер строки в вашей трассировке стека:

Восстановление исключений и сохранение полной трассировки стека вызовов - блог Фабриса

Код написан на C #, но код для метода PreserveStackTrace должен быть относительно простым для переноса на VB.NET.

0 голосов
/ 14 апреля 2011

РЕШЕНИЕ : два решения на Неправильный номер строки в трассировке стека выдает новое исключение с текущим исключением в качестве внутреннего или использует вспомогательный метод.
I 'Я собираюсь пойти с выбрасыванием нового исключения.

0 голосов
/ 14 апреля 2011

Когда исключение перебрасывается, исходные детали исключения сохраняются в свойстве InnerException объекта. У вас должны быть все ваши данные.

...