获取NullReferenceException的Null对象

Bru*_*lva 7 .net c#

我在工作中遇到了一个问题,它会导致很多"对象引用没有设置为对象的实例"错误.确定导致异常的空对象的最佳方法是什么?

我可以尝试在一个地方捕获所有这些异常,但无法找到一种方法来确定null的成员,以便我可以正确地修复它.

try {
}
catch (Exception ex)
{
if (ex is ReferenceNullException)
ex.??
}
}
Run Code Online (Sandbox Code Playgroud)

因为我可以查看堆栈跟踪,所以认为你也可以得到导致错误的原因是合理的.

Str*_*lok 11

想想它一秒钟.这是一个NullReferenceException.这意味着您正在尝试调用方法或访问对象的NULL REFERENCE上的属性.这意味着您尝试访问的对象引用是EMPTY,null.它不存在.

所以你想要找到的东西实际上并不存在.

通常,为了跟踪哪个对象引用为null,使用调试器.只需在导致异常的行上设置断点并检查所有变量以查看哪个变量为空.

调试器是您最好的工具.

  • 我知道.问题是这是一个已经在生产中的解决方案,我只能通过电子邮件获得错误.无法回复一些用户获得的大多数错误. (6认同)
  • 开始有点哲学,但随后提出了合理的建议.+1. (5认同)
  • 反射可以做一些很酷的事情,但确定在try块中失败的东西并不是很好地利用反射,无论可能性如何.更改电子邮件发送例程以发送堆栈跟踪,并考虑使用应用程序推出PDB文件(这样您就可以获得这些堆栈跟踪中的行号,而不是字节偏移量) (2认同)