获取NullReferenceException的变量名

埃尔莫

的堆栈跟踪NullReferenceException非常无用,它们仅包含方法名称和调用堆栈。方法中的任何变量都可以为null,并且当在开发机上无法重现该错误时,很难调试。

您是否知道一种获取有关该错误的更多信息的方法,也许是获取变量名的方法?还是您有更好的调试方法?

亨克·霍尔特曼

不一定总是可以跟踪该名称(它可以是一个表达式)。
并且在可能的情况下会产生不可接受的开销。考虑到运行时将不得不跟踪几乎所有的参考变量,这将是昂贵的,并且会阻止各种优化。

另请参阅我关于检查托管堆栈的答案以及它所引用的Blog帖子。

简单的解决方案是在自己的代码中内置更一致的null检查:

void Foo(Bar b)
{
   if (b == null) throw new ArgumentNullException(nameof(b));

   ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章