我正在为网上商店实现一个错误记录器,只是在特定类中记录NullReferenceException只对某个级别有用。我并不真正对如何防止异常感兴趣,因为我知道这一点,但有时它仍然会发生错误记录器。
然后问题是:如何在所有异常信息中找到System.NullReferenceException的源。
答案 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的内容来确定导致错误的根位置。