【发布时间】:2019-03-29 14:39:56
【问题描述】:
有没有办法找出导致NullReferenceException 的特定 对象?我已经阅读了有关troubleshooting NullReferenceExceptions 的页面,它谈到了在调试器中检查变量并查看异常消息。
如果在生产代码中引发了异常,因此您无法运行调试器来检查变量怎么办?异常消息显示堆栈跟踪,因此您可以查看引发异常的方法,但它没有说明 null 是哪个特定对象。
我希望能够将 null 的对象名称添加到错误消息中,这样当我查看来自用户的报告并遇到 NullReferenceException 时,我可以很容易地看到null 是什么对象并修复它。有谁知道这样做的方法吗?
我还找到了this question,它问了同样的问题,但它是从 2011 年开始的,我不知道从那时起是否有任何变化。
编辑:The question 这被标记为重复确实是重复但也很旧(2008 年)。从那以后有什么变化吗?
编辑 2:我在谷歌搜索这个问题时发现了 this。 Visual Studio 可以告诉你是什么扔了NullReferenceException;有没有办法利用它来将它添加到日志文件中?
【问题讨论】:
-
Rand Al'thor,这可能是Detecting what the target object is when NullReferenceException is thrown的副本
-
“它没有说明哪个特定对象为空” - 记录的异常应包含带有方法名称和行号的堆栈跟踪。您可以简单地查看内部资源,看看可能是什么问题。
-
@Sinatr 如果同一行上有多个对象,这将无济于事。哪个对象为空?
-
这正是堆栈跟踪所做的。当事情发生时,繁荣。错误冒泡,堆栈跟踪记录了所有内容。
-
@mxmissile 我同意它是重复的,但接受的答案是从 2008 年开始的。我想看看从那时起是否有任何变化。
标签: c# logging nullreferenceexception