首页 > 解决方案 > 为什么在编译时不检查空指针异常,例如在 Java 中迭代空集合而不是运行时异常时?

问题描述

每当我Collection在 Java 中迭代 a 时,它都会在运行时null抛出 a 。NullPointerException为什么没有编译时检查?

例如这里:

List<String> list = null;
for (String str : list) {
    System.out.println(str);
}

标签: javacollections

解决方案


我的想法是

对于可预防的事情,会抛出 RuntimeExceptions。

例如,NullPointerExceptions 总是可以避免的,因此是未经检查的异常。

所以,编译器不会那样做。尽管诸如 Intellij IDE 或 SonarLint 之类的工具会向您显示一条警告,说明它可能会引发 NullPointerException。

无论如何,程序员应该知道某些东西是否会抛出 NullPointerException。


推荐阅读