System.NullReferenceException的来源

时间:2012-12-13 08:24:07

标签: c# nullreferenceexception

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

此外,向方法添加参数验证可以使 lot 更简单,以确定错误。就个人而言,我是这方面帮助方法的粉丝。例如,在Noda Time中我们有Preconditions,所以我可以打电话:

Preconditions.CheckNotNull(foo, "foo");

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

越早发现意外的空引用就越好。

答案 1 :(得分:0)

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