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?
Antworten
Zu viele Anzeigen?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.
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.