Source of System.NullReferenceException



我正在为网上商店实现一个错误记录器,并且仅在特定类中记录NullReferenceException仅在一定级别有用。我知道,我对如何防止异常并不真正感兴趣,但有时它仍然会发生错误记录器。

那么问题是:如何在所有异常信息中找到System.NullReferenceException的来源。

确保记录完整的堆栈跟踪。假设您已经打开了调试信息(没有理由不为 Web 应用程序......),您应该能够找到导致问题的行。

当然,这并不总是能为您提供所需的所有信息,如果您拥有:

if (foo.Bar.Baz && person.Address.Road.Length)

在一行中...但这是你会得到的最佳起点。

此外,向方法添加参数验证可以使确定问题变得更加简单。就个人而言,我是这方面的帮助方法的粉丝。例如,在野田时间我们有Preconditions,所以我可以调用:

Preconditions.CheckNotNull(foo, "foo");

(它还返回 foo 的值,这在将参数复制到字段中的构造函数中很方便)。

早检测到意外的空引用越好。

如果我

正确理解了这个问题,请在Visual Studio中转到"调试>异常",然后选中所有选项以引发异常。这将允许您查看调试时抛出的所有内容。您可以使用 InnerException 的内容来确定导致错误的根位置。

最新更新