【发布时间】:2011-02-09 16:58:59
【问题描述】:
我知道我可以使用这些技术找出 Java 中的变量是否为空:
- 如果
(var==null)-> 工作量太大 -
try { ... } catch (NullPointerException e) { ...}-> 它告诉我是哪一行抛出异常 - 使用调试器 -> 手动,太慢了
考虑这行代码:
if (this.superSL.items.get(name).getSource().compareTo(VIsualShoppingList.Source_EXTRA)==0) {
我想知道是否有一种通用的方法可以以编程方式找出在某个代码区域中抛出 NullPointerException 的变量(不仅仅是行)。在示例中,知道
【问题讨论】:
-
嗯,如果这不是单行的话,会更容易找到 NullPointerException。这样的代码真的很难遵循。
-
考虑到您的选择,我只想指出,从长远来看,“工作量太大”实际上可能意味着工作量要少得多。
-
把它变成一个合适的块。您很快就会发现问题。
-
不要忘记使用异常作为控制流机制是一件非常糟糕的事情......
-
10 年后,JEP 358 将有所帮助:请参阅 my answer below
标签: java debugging nullpointerexception