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

标签 java debugging nullpointerexception

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

  • 如果 (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 - 找出以编程方式抛出 NullPointerException 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667908/

相关文章:

java - NetBeans 调试器不会在断点处停止

c++ - Zig-Zag 序列 [动态编程] 错误

java.lang.NullPointerException 使用方法引用而不是 lambda 表达式引发

java - 尝试在Java中播放声音: NullPointerException

c# - 调试器无法继续运行该进程。无法开始调试

java - 使用可选参数创建一个 Runnable jar

java - SQSEvent 不存在于 aws-lambda-java-events 1.x 中,AmazonS3 不存在于 aws-lambda-java-events 2.x 中?

java - 在 Java 中使用外部 IP 地址建立连接

java - Android - 错误 java.lang.UnsupportedOperationException : JsonNull

java - Java 中的计数 - 文本字段仅显示最后一个值