576 Stimmen

IllegalArgumentException oder NullPointerException für einen Null-Parameter?

Ich habe eine einfache Setter-Methode für eine Eigenschaft und null ist für diese spezielle Immobilie nicht geeignet. Ich war in dieser Situation immer hin- und hergerissen: Sollte ich eine IllegalArgumentException oder eine NullPointerException ? Nach den Javadocs scheinen beide geeignet zu sein. Gibt es so etwas wie einen anerkannten Standard? Oder ist das einfach so, dass man das tun sollte, was man bevorzugt, und beides ist wirklich richtig?

5voto

Nitesh Soomani Punkte 524

NullPointerException wenn versucht wird, auf ein Objekt mit einer Referenzvariablen zuzugreifen, deren aktueller Wert null .

IllegalArgumentException wird ausgelöst, wenn eine Methode ein Argument erhält, das anders formatiert ist als von der Methode erwartet.

4voto

Im Allgemeinen sollte ein Entwickler jamais eine NullPointerException auslösen. Diese Ausnahme wird von der Laufzeit ausgelöst, wenn Code versucht, eine Variable zu derefenzieren, deren Wert null ist. Wenn Ihre Methode also explizit den Wert Null nicht zulassen will, und nicht nur zufällig einen Nullwert hat, der eine NullPointerException auslöst, sollten Sie eine IllegalArgumentException auslösen.

4voto

Jason Fritcher Punkte 1461

Ich wollte Null-Argumente von anderen illegalen Argumenten unterscheiden, also habe ich eine Ausnahme von IAE namens NullArgumentException abgeleitet. Ohne dass ich die Ausnahmemeldung lesen muss, weiß ich, dass ein Null-Argument an eine Methode übergeben wurde, und durch Lesen der Meldung finde ich heraus, welches Argument Null war. Ich fange die NullArgumentException immer noch mit einem IAE-Handler ab, aber in meinen Protokollen kann ich den Unterschied schnell erkennen.

4voto

Die Dichotomie... Sind sie nicht überlappend? Nur nicht überlappende Teile eines Ganzen können eine Dichotomie bilden. So wie ich es sehe:

throw new IllegalArgumentException(new NullPointerException(NULL_ARGUMENT_IN_METHOD_BAD_BOY_BAD));

4voto

leo Punkte 71

Gemäß Ihrem Szenario, IllegalArgumentException ist die beste Wahl, denn null ist kein gültiger Wert für Ihre Eigenschaft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X