1

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

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

4

2 回答 2

1

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

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

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

在一行中...但这是您将获得的最佳起点。

此外,向方法添加参数验证可以简单地确定问题所在。就我个人而言,我是这个辅助方法的粉丝。例如,在 Noda Time 我们有Preconditions,所以我可以调用:

Preconditions.CheckNotNull(foo, "foo");

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

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

于 2012-12-13T08:28:01.267 回答
0

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

于 2012-12-13T08:34:37.333 回答