JEP Adventskalender #6

JEP 358 – Helpful NullPointerExceptions

Dominik Mohilo

A JEP a day keeps the Christmas blues away! Frei nach diesem Motto stellen wir euch in diesem Jahr zwischen den Jahren sämtliche JEPs der kommenden Java-Version vor. Ganze 16 JEPs haben es in Java 14 geschafft, deutlich mehr als es in den vorigen Versionen Java 12 und Java 13 vertreten waren (8 bzw. 5 JEPs).

Das Jahr 2019 brachte uns Java 12 und Java 13, allerdings waren diese Versionen unserer liebsten Programmiersprache nicht besonders umfangreich, was neue Features betrifft. Größe ist nicht immer der entscheidende Faktor, dennoch waren JDK 12 und 13 nicht vergleichbar mit etwa Java 8 oder Java 9. Dies liegt natürlich auch am neuen Releasezyklus und muss nicht zwangsläufig etwas Negatives sein – im Gegenteil: steter und gleichmäßiger Fortschritt ist einem großen Klotz an neuen Funktionen (und Problemen) von Zeit zu Zeit durchaus vorzuziehen.

Java 14 wird nun aller Voraussicht nach ein wenig „dicker“. Grund genug für uns hier bei JAXenter, über die enthaltenen JEPs zu berichten. Zudem steht Weihnachten vor der Tür! Santa Duke is coming to town – Schauen wir uns einmal an, was er in seinem Geschenkesack hat…

Lesen Sie auch: Java 14: Das JDK ist in der Rampdown-Phase

JEP 358 – Helpful NullPointerExceptions

Programme, und da machen auch Java-Anwendungen keine Ausnahme, bestehen in der Regel aus einer Vielzahl an Methoden, Objekten, Funktionen, Annotationen und so weiter. Und in diesem großen Sammelsurium aus Kleinteilen kann praktisch überall eine sogenannte NullPointerException (NPE) auftreten. Dieses Problem soll von JEP 358 – Helpful NullPointerExceptions gelöst werden. Durch eine Analyse der Bytecode-Anweisungen eines Programms soll die JVM zukünftig präzise aufzeigen können, welche Variable einen Nullwert ergibt. Daraufhin soll die JVM eine null-detail message in der NullPointerException ausgeben, die neben der bislang üblichen Meldung erscheint. Das obige Beispiel würde dann wie folgt aussehen:

Exception in thread "main" java.lang.NullPointerException: 
        Cannot assign field 'i' because 'a' is null.
    at Prog.main(Prog.java:5)

Entsprechend würde die Nachricht für das etwas komplexere Beispiel (a.b.c.i = 99;) so erscheinen:

Exception in thread "main" java.lang.NullPointerException: 
        Cannot read field 'c' because 'a.b' is null.
    at Prog.main(Prog.java:5)

Ziel des JEP 358 ist es, so die Autoren, Entwicklern wichtige und hilfreiche Informationen für die Fehlerbehebung direkt an die Hand zu geben. Neue Entwickler wären so weniger verwirrt und besorgt über NPEs und das allgemeine Verständnis eines Programms könnte so auch verbessert werden.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: