我们都对这种例外感到厌倦,但有没有办法迅速找到冒犯的东西呢?通常,这样的异常会抛出如下一行:
var myVar = somethingUninitallized.property;
很容易看出,任务的右边是原因。然而,有时这些长队是这样长的:
var myVar = x.DoSomething(y.FirstDoThis(isThisInitiallized).aProperty, z.ThenDoThis(whatAboutThis).anotherProperty).ComplicatingThings().thisHappensSometimes;
在这条线上我们得到了例外。是的,我们本可以用不同的方式编写代码,但可能是调试其他人的代码,修改代码需要重新编译15分钟、需要授权或任何其他障碍。这是一个微不足道的例子,我也可以在linq上考虑,但肯定还有其他更复杂的场景。我通常会在2020年逐个检查每件东西。
是否不可能从调试器工具中获得,或者某种程度上,这是具有空引用的东西?
发布于 2020-05-01 13:18:42
以下是从调试System.NullReferenceException复制的答案,由托马斯·阿德尔编写
Visual 中使用空参考分析的
如果您使用的是Visual 2017或更高版本,则可以使用“空引用分析”功能。这样,Visual就可以准确地向您展示什么是null。让我们使用这个方法链接示例:
var street = service.GetUser().Address.Street;
若要启用分析,请转到“调试”、“窗口”、“异常设置”。检查公共语言运行时异常(如果尚未检查)或扩展节点并检查您感兴趣的异常。
在这种情况下,您可以检查System.NullReferenceException。运行代码时,调试器会在NullReferenceException
上中断,现在您将看到抛出的异常窗口:
瞧!窗口显示"ConsoleApp18.User.Address.get返回null“。这正是我们想看到的。
https://stackoverflow.com/questions/61549156
复制