在asp.net中引发问题

| 在下面,为什么“ 0”不保留我的始发行号? 如果运行DerivedPage,我的日志文件将错误列为第7行。 它不应该说第4行吗?如果我有
Throw ex
,这是有道理的,但我没有。
Throw
本身不是应该重新抛出并冒出错误吗? 如果我在DerivedPage中完全删除了“ 3”块,那么我的日志文件正确地将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
编辑:
log.Error
会输出InnerException(如果存在)。在这种情况下确实如此。但是,InnerException的堆栈跟踪不包含行号,而仅包含Exception详细信息。     
已邀请:
重新抛出异常时,原始异常详细信息存储在对象的InnerException属性中。您应该在那里拥有所有详细信息。     
有一种可以实现的方法,可以在堆栈跟踪中为您提供正确的行号: 重新抛出异常并保留完整的调用堆栈跟踪-Fabrice's Weblog 代码使用C#,但是the7ѭ方法的代码应该相对容易移植到VB.NET。     
解决方案:堆栈跟踪上每个错误的行号有两个解决方案,它们会抛出一个新异常,并以当前异常作为内部异常,或者使用辅助方法。 我要抛出一个新的异常。     

要回复问题请先登录注册