java – 找出以编程方式抛出NullPointerException的变量

我知道我可以使用这些技术找出Java中的变量是否为null:

> if(var == null) – >太多的工作
> try {…} catch(NullPointerException e){…} – >它告诉我什么行抛出异常
>使用调试器 – >用手,太慢了

考虑以下代码行:

if (this.superSL.items.get(name).getSource().compareTo(VIsualShoppingList.Source_EXTRA)==0)  {

我想知道是否有一种通用的方法来以编程方式找出哪个变量(不仅仅是行)在某个代码区域中抛出NullPointerException.在这个例子中,知道这一点

解决方法:

因为即使没有涉及变量也可能导致空指针异常:

throw new NullPointerException();

我不得不说,没有通用的方法可以将空指针异常固定到特定变量.

你最好的选择是尽可能少地在每一行上添加语句,以便明显是什么导致空指针异常.考虑在问题中重构代码,看起来像这样:

List items = this.superSL.items;
String name = items.get(name);
String source = name.getSource();
if (source.compareTo(VIsualShoppingList.Source_EXTRA) == 0)  {
    // ...
}

这是更多的代码行.但它也更具可读性和可维护性.

上一篇:java – 尝试findViewById时抛出Nullpointerexception


下一篇:java – IntelliJ idea gui设计师maven