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



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

例如这里:

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

我的想法是

运行时对于可预防的事情,将引发异常。

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

因此,编译器不会这样做。尽管像Intellij IDE或SonarLint这样的工具会向你显示一个警告,说它可能会抛出一个NullPointerException。

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

最新更新