Null- oder IllegalArgumentException

Was für eine Exception ist angebracht?

  • IllegalArgumentException

    Stimmen: 0 0,0%
  • BeniIstDoofException

    Stimmen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    215
Status
Nicht offen für weitere Antworten.
B

Beni

Gast
Ich sitze gerade vor einem mächtigen Problem: eine Methode bekommt ein Argument, nennen wir es x.
x darf nicht null sein.
Wenn nun diese Methode ein x = null bekommt, welche Exception soll sie da werfen? NullPointer oder IllegalArgument?
 

L-ectron-X

Gesperrter Benutzer
Bin für IllegalArgumentException weil es ja primär um das übergebene Argument geht.
Du könntest doch aber in einem zweiten catch-Block trotzdem noch eine NullPointerException abfangen.
 

Sky

Top Contributor
Ich denke hier ist beides gleich gut.

Einerseits ist es so, dass es ungültiges Argument übergeben wurde, jedoch ist es auf der anderen Seite so, dass Du null übergeben bekommst und dies im weiterem Programmverlauf ein Fehler darstellt.
 

L-ectron-X

Gesperrter Benutzer
Naja, ich denke trotzdem, dass du gleich das illegale Argument abfangen solltest, denn warum sollte man im weiteren Programmverlauf mit Dingen arbeiten, die Probleme verursachen können. Wenn du gleich die IllegalArgumentException auffängst, gehst du dem schon von Anfang an aus dem Weg.
 
B

Beni

Gast
Hm, meine Gedanken gingen in eine ähnliche Richtung wie L-ectron-X'ses.

Dann nehm ich mal die IllegalArgument.

THX für das Schreiben & Denken.
 

-frank

Bekanntes Mitglied
ich wollte gerade dasselbe fragen und bin über die suche auf diesen thread gestoßen. da dieser schon 2 jahre alt ist, gibts ja vielleicht ein paar neue meinungen dazu.
 
S

SlaterB

Gast
die Exception soll doch sicherlich am Start eigenständig geworfen werden,
da passt nur IllegalArgumentException,
throw NullPointerException führt in die Irre, da ja kein fehlerhafter Zugriff auftrat

NullPointerException ist für mich eine Systemexception,
die idealerweise überhaupt nur bei null.operation() auftritt
 

-frank

Bekanntes Mitglied
SlaterB hat gesagt.:
NullPointerException ist für mich eine Systemexception,
die idealerweise überhaupt nur bei null.operation() auftritt

ich sehs eigentlich eh auch so. wie man am umfrageergebnis sieht, ists aber nicht so eindeutig.

bei mir wird ansonsten eine NPE aber auch nur bei aufrufen à la null.operation() geworfen, da ich ja mitten in einer methode nicht auf null-überprüfe, außer eine methode kann null returnieren, aber dann muss ich diesen fall ja entsprechend behandlen und es macht wohl wenig sinn, selbst eine NPE zu werfen.
 
B

bygones

Gast
stimme SlaterB zu...

NullPointer halte ich fuer unangebracht in diesem Fall !
 

mikachu

Top Contributor
die guten NPE's lernt man mit der zeit eh lieben, also nimm diese ;)

#edit 1:
oder schreibst ne eigene IllegalArgumentBecauseItIsNullException und wirfst die
 

thomator

Bekanntes Mitglied
Ich finde die NullPointerException schon deshalb unangebracht, weil sie suggeriert, dass das Objekt, dessen Eigenschaften und Methoden aufgerufen werden sollen, null ist. Das führt in dem Kontext nur zu Verwirrung.

[EDIT]:
Upps,sollte man den ganzen Thread VORHER lesen, Slater hat ja schon sinngemäß das Gleiche geschrieben...
 

Hilefoks

Bekanntes Mitglied
Ich persönlich werfe nie, also nie absichtlich, NPEs. Der Grund ist einfach: Ich will keine NPEs fangen weil diese andere Programmierfehler verschlucken könnten. Für mich sind NPEs echten Programmierfehlern vorbehalten. Vergesse ich einen Wert gegen null zu testen gibt es eine NPE - vergesse ich es nicht aber der Wert darf nicht null sein gibt es eine IllegalArgumentException (o.Ä.). Die IAE kann ich fangen - verschlucke dabei aber keine anderen Programmierfehler.

Dadurch kann ich mir bei meinem eigenen Code immer sicher sein das ich einen Programmierfehler habe wenn er eine NPE wirft.

MfG,
Hilefoks
 

DEvent

Bekanntes Mitglied
Also ich denke es sprichts nichts dagegen eine NPE zu werfen.
Denn entweder sind null Parameter erlaubt, oder es wird spaeter doch eh eine NPE geworfen.
also als Beispiel:
Code:
void machWas(Object foo)
{
    if ( foo.equels ) // mache irgendwas
}
Nun wirft der Programmierer keine NPE, aber die wird dann eh spaeter bei der If-Abfrage geworfen.
Code:
void machWas(Object foo)
{
    if ( foo == null ) throw new NPE("Param foo is null");
    if ( foo.equels ) // mache irgendwas
}
So kann man gleich sehen, dass foo nicht null sein darf.

Nehmen wir doch mal einen komplizierten Fall:
Code:
void machWas(Object foo)
{
    meineListe.add(foo);
}

// irgendwo spaeter
void macheBar()
{
    foreach ( meineListe : item ) item.machWas();
}
Nun wird eine NPE geworfen, aber wer weis noch, woher das null-Objekt hergekommen ist?

Code:
void machWas(Object foo)
{
    if ( foo == null ) throw new NPE("Param foo is null");
    meineListe.add(foo);
}

// irgendwo spaeter
void macheBar()
{
    foreach ( meineListe : item ) item.machWas();
}
Aha, hier weis ich sofort, dass foo nicht null sein darf, weil es dann spaeter im Programm einen Fehler gibt.

Also meine Schlussfolgerung: Dem werfen einer NPE steht eigentlich nichts im Wege. Aber es gilt die Regel: Fehler immer so frueh wie moeglich zu erkennen und mit Exceptions um sich werfen. Denn je laenger man damit wartet, desto schwieriger wird es den Fehler nachzu vollziehen.
Ausserdem, eine NPE faengt man normalerweise auch nicht explizit (also man macht doch kein try catch fuer eine NPE).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
Zrebna SonarLint: Warum kein Null-Referencing-CodeSmell-Hint hier? Allgemeine Java-Themen 23
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
8u3631984 Argument Captor liefert NULL zurück Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
J Zahlen Abstand zur Null bestimmen Allgemeine Java-Themen 11
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
S An internal error occurred during: Launching null argument Allgemeine Java-Themen 1
S Validation Null aber nicht Blank und muss Email sein Allgemeine Java-Themen 22
L Google Guice Field Injection returns null Allgemeine Java-Themen 2
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
N MsgPack - Null Check Allgemeine Java-Themen 5
T JasperReports mit Null Pointer Allgemeine Java-Themen 3
DanielsLPecke Compiler-Fehler Warum ist der String null? Allgemeine Java-Themen 10
M Warten bis Variabel nicht null ist Allgemeine Java-Themen 18
Thallius Simple JSON Parser Error null Allgemeine Java-Themen 6
M Null byte in verschiedenen charsets Allgemeine Java-Themen 2
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
B [Android] EditText-Object ist null - Nimmt nicht den Wert des enthaltenen Textfeldes ein Allgemeine Java-Themen 2
D Java Process OutputStream ist null Allgemeine Java-Themen 4
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
D Problem mit führender Null bei Schlüsselerzeugung Allgemeine Java-Themen 5
T Variablenübergabe liefert immer null Allgemeine Java-Themen 13
K Image beim catchen ist immer null Allgemeine Java-Themen 9
B Load of Known null Value Allgemeine Java-Themen 9
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
S Null Pointer Exception bei BufferedReader Allgemeine Java-Themen 4
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
Tobse Vererbung null aus Elternklasse "dominant"? Allgemeine Java-Themen 15
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
I newInstance() liefert null zurück Allgemeine Java-Themen 4
R Attribut null Allgemeine Java-Themen 6
C Regex: Zahl ohne führende Null Allgemeine Java-Themen 13
E rückgabewert ist immer null Allgemeine Java-Themen 2
N List auf null prüfen Allgemeine Java-Themen 2
TiME-SPLiNTER Von Unix, InputStreams und Null Bytes Allgemeine Java-Themen 2
R dateFormat - Uhr fängt nicht bei null an Allgemeine Java-Themen 2
P Null in ArrayList Allgemeine Java-Themen 3
N Strings mit null wiedergabe Splitten Allgemeine Java-Themen 4
mongole Formatter + null Allgemeine Java-Themen 4
X Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ? Allgemeine Java-Themen 10
A Umgang mit null Allgemeine Java-Themen 16
L Object = null? Allgemeine Java-Themen 16
L null pointer exception Allgemeine Java-Themen 10
nrg Leere Objektreferenz mit != null vergleichen Allgemeine Java-Themen 4
J Null Pointer in der compare-Methode des Comparators? Allgemeine Java-Themen 18
T Set.contains() auch false wenn value == null? Allgemeine Java-Themen 4
D Matrix, ArrayList, null-Zellen Allgemeine Java-Themen 6
F Hibernate speichern - Null Allgemeine Java-Themen 5
knuckles12 null pointer exception bei arrays Allgemeine Java-Themen 6
T WeakHashMap: Wie "null" effizient abfangen? Allgemeine Java-Themen 5
N Null Durchblick in Java, Jobwechsel? Allgemeine Java-Themen 19
M nichtreferenzierte Objekte auf NULL setzen -> Performance Allgemeine Java-Themen 4
S JFreeChart LineChart Punkte über NULL Werte hinweg verbinden Allgemeine Java-Themen 5
N Array mit null Werten filtern Allgemeine Java-Themen 5
S Combobox --> liefer null? Allgemeine Java-Themen 3
A java.net.UnkownHostException: null bei jar-File Allgemeine Java-Themen 16
B Null Pointer Exception bei Canvas-objekt-Aufruf Allgemeine Java-Themen 12
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
R if (obj == null || obj.isEmpty()) Allgemeine Java-Themen 21
P <null> in einer DB abfragen Allgemeine Java-Themen 4
G Nicht abgefangene Null-Pointer-Exception Allgemeine Java-Themen 2
P Image auf einem Panel mit null-Layout Allgemeine Java-Themen 8
M getResourceAsStream immer null Allgemeine Java-Themen 4
R Array komplett auf null setzen Allgemeine Java-Themen 10
A JasperReport Detail bringt null bei Datenübergabe Allgemeine Java-Themen 4
S Null Pointer Exception Allgemeine Java-Themen 10
S instanceof und null Allgemeine Java-Themen 7
M Führende Null in einem Datum Allgemeine Java-Themen 3
L null != null ? Allgemeine Java-Themen 16
Redfrettchen Rückgabe nicht sinnvoll: Exception oder null zurück? Allgemeine Java-Themen 9
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
K Exception im Konstruktor / Objekt == null Allgemeine Java-Themen 7
Z bedeutung (übersetzung) von null? Allgemeine Java-Themen 5
T Exception im Constructor -> null-Referenz zurückgeben Allgemeine Java-Themen 6
C Objekte null setzen? Allgemeine Java-Themen 7
M IllegalArgumentException Allgemeine Java-Themen 9
MiMa IllegalArgumentException Allgemeine Java-Themen 4
T komplizierter Comparator (IllegalArgumentException) Allgemeine Java-Themen 3
VfL_Freak IllegalArgumentException beim Obfuskieren mit ProGuard V4.4 Allgemeine Java-Themen 6
hdi Javadoc Comments: IllegalArgumentException deklarieren? Allgemeine Java-Themen 3
faetzminator IllegalArgumentException bei Method.invoke() Allgemeine Java-Themen 6
M IllegalArgumentException oder Exception werfen? Allgemeine Java-Themen 18

Ähnliche Java Themen

Neue Themen


Oben