Es gibt verschiedene Gründe. Ein großer, wie in den Kommentaren erwähnt, ist es, die Überprüfung im Voraus zu erledigen, bevor irgendwelche Arbeiten erledigt werden. Es ist auch nicht ungewöhnlich, dass eine Methode über einen Codepfad verfügt, in dem ein bestimmter Parameter niemals dereferenziert wird. In diesem Fall können ungültige Aufrufe der Methode manchmal keine Ausnahme erzeugen, wenn sie nicht vorab überprüft werden. Das Ziel ist es sicherzustellen, dass sie immer eine Ausnahme erzeugen, so dass der Fehler sofort gefangen wird. Das heißt, ich brauche nicht notwendigerweise checkNotNull
, wenn ich sofort den Parameter in der nächsten Zeile oder etwas dereferenzieren werde.
Es gibt auch den Fall von Konstruktoren, wo Sie checkNotNull
vor dem Zuweisen eines Parameters zu einem Feld möchten, aber ich denke nicht, dass Sie darüber reden, da Sie über Methoden sprechen, wo der Parameter verwendet wird sowieso.
Es könnte sein, wenn Sie nach vorne schauen, dass Sie noch keine Arbeit erledigt haben, Arbeit, die Sie zurückrollen oder in einem inkonsistenten Zustand verlassen müssen, wenn eine NPE mitten in diese Arbeit geworfen wurde? –
Sie können auch eine Ausnahme mit mindestens einer sinnvollen Nachricht an den Benutzer auslösen (mindestens viel besser als eine NullPointerException) –
Null-Parameter führt nicht immer zu unmittelbarer NPE. Zum Beispiel kann es einem Feld oder einer Sammlung hinzugefügt werden und zu Fehlern führen, die schwer zu untersuchen sind. –