的堆栈跟踪NullReferenceException
非常无用,它们仅包含方法名称和调用堆栈。方法中的任何变量都可以为null,并且当在开发机上无法重现该错误时,很难调试。
您是否知道一种获取有关该错误的更多信息的方法,也许是获取变量名的方法?还是您有更好的调试方法?
不一定总是可以跟踪该名称(它可以是一个表达式)。
并且在可能的情况下会产生不可接受的开销。考虑到运行时将不得不跟踪几乎所有的参考变量,这将是昂贵的,并且会阻止各种优化。
另请参阅我关于检查托管堆栈的答案以及它所引用的Blog帖子。
简单的解决方案是在自己的代码中内置更一致的null检查:
void Foo(Bar b)
{
if (b == null) throw new ArgumentNullException(nameof(b));
...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句