9
为什么要显式抛出NullPointerException而不是让它自然发生?
阅读JDK源代码时,笔者通常会检查参数是否为null,然后手动抛出新的NullPointerException()。他们为什么这样做?我认为没有必要这样做,因为它在调用任何方法时都会抛出新的NullPointerException()。(例如,以下是HashMap的一些源代码:) public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) { if (remappingFunction == null) throw new NullPointerException(); Node<K,V> e; V oldValue; int hash = hash(key); if ((e = getNode(hash, key)) != null && (oldValue = e.value) != null) { V v = remappingFunction.apply(key, oldValue); …