2014-01-09 6 views
6

Ich verwende den folgenden Code. Die erste Zeile gibt java.lang.NumberFormatException, und die zweite gibt java.lang.NullPointerException. Ich kann nicht herausfinden warum.Warum treten unterschiedliche Ausnahmen auf?

int intValue =Integer.parseInt(null); 
Double double1 = Double.parseDouble(null); 
+2

Ehrlich was erwarten Sie, das Verhalten zu Sein? "Ja wirklich?" –

+0

lesen Sie das Kapitel über Ausnahmen in Head First Java - http://www.amazon.in/Head-First-Java-Kathy-Sierra/dp/8173666024?tag=googinhydr2765-21 .. Sie erklären Ausnahmen ziemlich gut. –

+11

Stoppen Sie die Abstimmung, diese Frage verdient diese vielen Downvotes nicht. Es ist ein berechtigter Zweifel, dass ein Parser eine Ausnahme wirft und wo der andere anders ist. Ein gültiger Grund könnte da sein. –

Antwort

11

Weil das ist, wie sie umgesetzt werden,

int intValue =Integer.parseInt(null); 

Wenn wir die parseInt Umsetzung aussehen, werden sie NumberFormatException werfen, wenn die Eingabezeichenfolge null

enter image description here

Und Double double1 = Double.parseDouble(null); ist

In parseDouble(String s) Methode ist es eine andere Methode Aufruf dh FloatingDecimal.readJavaFormatString(s).doubleValue();
In readJavaFormatString(s) Verfahren ist, wo genau NullPointerException

enter image description here

FloatingDecimal.readJavaFormatString(s) Methode geworfen wird

enter image description here

+2

Es ist auch so dokumentiert: [parseDouble] (http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble%28java.lang.String%29) und [parseInt] (http://docs.oracle.com/javase/ 7/docs/api/java/lang/Ganzzahl.html # parseInt% 28java.lang.String% 29). – jpmc26

+0

Jetzt ist das eine ziemliche Antwort: D –

+0

@ jpmc26 +1 Einfachste als Überprüfung der Implementierung :) – gowtham

0

Dies ist, wie beide Funktionen implementiert sind in jeweiligen Klassen.

ParseInt Methode Validierung der Parameter:

if (s == null) { throw new NumberFormatException("null"); }

parseDecimal Methode zuerst fordert die Eingabe-String-Parameter trimmen:

in = in.trim(); // throws NullPointerException if null

Verwandte Themen