Double.parseDouble (null) 및 Integer.parseInt (null)에서 다른 예외가 발생하는 이유는 무엇입니까?
이것은 역사적 사고입니까, 의도적입니까? 문서에는에 대한 두 가지 유형의 예외 Double.parseDouble(...)
와 하나에 대한 예외가 명시되어 Integer.parseInt()
있지만 일관성이없는 것 같습니다.
Integer.parseInt(null); // throws java.lang.NumberFormatException: null
하나
Double.parseDouble(null); // throws java.lang.NullPointerException
답변
null에 대해 동일한 예외가 throw 될 것으로 예상하는 것이 합리적입니다. 그러나 이러한 API는 매우 오래되어이 시점에서 변경할 수 없습니다.
과:
예외 동작은 오래 지속되고 JavaDoc에 지정되어 있기 때문에 현재 두 메서드의 동작을 변경하는 것은 비현실적입니다. 해결되지 않는 것처럼 닫습니다.
출처 : 버그 보고서 : Integer.parseInt () 및 Double.parseDouble ()은 null에 대해 다른 예외를 throw합니다.
다른 사람들이 말한 것처럼 : 다른 저자가 만든 것 같습니다.
답변
참고 :이 게시물의 모든 내용은 Java7-b147의 소스에 있습니다.
Double.parseDouble()
Sun 라이브러리 (에서 sun.misc.FloatingDecimal
)에 들어가는 첫 번째 중요한 일은 다음과 같습니다.
in = in.trim(); // don't fool around with white space.
// throws NullPointerException if null
Integer.parseInt()
Integer
수업 에서 수동으로 수행됩니다 . 발생하는 첫 번째 중요한 일은 다음과 같습니다.
if (s == null) {
throw new NumberFormatException("null");
}
두 명의 다른 저자가 있다고 생각합니다.