Java 14 – Więcej informacji przy NullPointerException

Java w wersji 14 daje możliwość uruchomienia rozszerzonych informacji o znanym i lubianym NullPointerException.

Standardowo, gdy odpalimy taki kawałek kodu:

    public static void main(String[] args) {
        howLong(null);
    }
    
    private static int howLong(String s) {
        return s.length();
    }

Dostaniemy taki oto wyjątek:

Exception in thread "main" java.lang.NullPointerException
	at NPEEx.howLong(NPEEx.java:12)
	at NPEEx.main(NPEEx.java:5)

Natomiast, gdy uruchomimy naszą aplikację z dodatkowym argumentem dla Virtual Machine

-XX:+ShowCodeDetailsInExceptionMessages

Dostaniemy już nieco więcej informacji

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "s" is null
	at NPEEx.howLong(NPEEx.java:8)
	at NPEEx.main(NPEEx.java:4)

I o ile w powyższym, prymitywnym przykładzie to nie potrzebujemy pomocy to, gdy mamy do czynienia z typowym anty-patternem “train wreck”:

person.getContactInfo().getAddress().getStreet()

To już dobrze wiedzieć co konkretnie się popsuło. Wówczas dostaniemy taką informację:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Address.getStreet()" because the return value of "ContactInfo.getAddress()" is null
	at NPEEx.main(NPEEx.java:5)

W IntelliJ możemy dodać argument do wirtualnej maszyny w menu Run -> Edit Configurations -> VM Options.

By być na bieżąco i mieć realny wpływ na tematykę tworzonych przeze mnie artykułów zapraszam do dołączenia do mojego newslettera.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *