2011-10-20 14 views

回答

6

你可以这样做:

var line = new StackFrame(0, true).GetFileLineNumber(); 

注意有几个注意事项这一点。

  1. 您将需要确保源文件和PDB可达。
  2. 这会得到你所在的方法的当前行,而不是你确切的位置。
  3. Jit可能执行导致错误信息的优化,例如内联方法。

对于VB.NET这是同样的事情:

Dim line As Integer = New StackFrame(0, True).GetFileLineNumber() 

至于传统的ASP老话 - 我不相信这是可能的。

+0

你有代码可以在asp中做到这一点吗? – RetroCoder

+0

@RetroCoder我不相信这是可能的。 – vcsjones

1

虽然vcsjones的答案可能正是你要找的,为了调试/故障诊断VB.NET的目的,你可能想看看Err对象的Erl属性。它返回一个整数,表示最后一次执行的语句的行号 - 按行号表示一个数字标签,而不是源文件的物理行号。

在关键点上用行号来编写代码有助于排除意外异常,并且不需要源文件和PDB就可以使Erl正常工作。