我们正在启动一个系统,有时我们会收到NullReferenceException
消息中著名的异常Object reference not set to an instance of an object
。
但是,在一种有将近20个对象的方法中,记录一个对象为空的日志实际上根本没有用。这就像告诉您,当您是研讨会的安全人员时,100位参加者中的一个人是恐怖分子。真的对您毫无用处。如果要检测哪个人是威胁性的人,则应该获取更多信息。
同样,如果要删除该错误,则需要知道哪个对象为空。
现在,有些事情困扰了我几个月,这就是:
.NET为什么不给我们名称或对象引用的类型(至少为null)?。它不能从反射或任何其他来源理解类型吗?
另外,了解哪个对象为空的最佳实践是什么?我们是否应该始终在这些上下文中手动测试对象的可空性并记录结果?有没有更好的办法?
更新:
异常The system cannot find the file specified
具有相同的性质。在附加到进程并进行调试之前,您无法找到哪个文件。我猜这些类型的异常会变得更聪明。如果.NET可以告诉我们c:\temp.txt doesn't exist.
而不是一般性消息,会更好吗?作为开发人员,我投赞成票。
new
用于创建类实例的“有用”提示。这样的提示什么时候真正有用?