2

我从我的一个应用程序中收到了许多似乎没有任何意义的错误报告。我有一个静态类,它有许多从我的代码的其他部分调用的公共静态方法。这些方法中的大多数都在 XML 文档上创建元素。

大多数这些方法的第一行是调用同一类中的私有静态方法,该方法在 XML 文档上创建元素并返回它,如下所示:

private static XmlElement BuildCmd(string name)
{
  XmlElement e = OtherClass.NewElement("CMD");
  e.SetAttribute("type", name);
  return e;
}

public static uint SendFlightReport(FlightData info, AircraftInfo aInfo)
{
  XmlElement cmd = BuildCmd("pirep");
  ....
  some other stuff
  ....
}

异常生成的堆栈转储都将调用 BuildCmd 的行报告为有问题的行,这没有任何意义 - 在调用静态方法?

编辑:对于那些询问的人,这里是 OtherClass.NewElement 的代码:

public class OtherClass {

   private readonly XmlDocument doc = new XmlDocument();

   public XmlElement NewElement(string name) {
      lock (doc)
        return doc.CreateElement(name);
   }
}
4

1 回答 1

-1

我怀疑您正在运行发布版本。由于编译器优化,在这种情况下,行号通常会略有偏差。尝试运行调试版本;您可能会发现异常实际上是在第一行或第二行引发的.... some other stuff ....

见,例如

https://stackoverflow.com/a/114854/385844

http://social.msdn.microsoft.com/Forums/zh/vsdebug/thread/afb7ae70-3e0c-4ea9-86ab-633fe1f9cf6a(VB.NET,但仍然......)

http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/6af62159-fe6b-4554-8e46-d2b6c06fa253

于 2012-04-13T02:39:30.763 回答