Errors Начинающий

JVM автоматически сообщает, какая переменная была null.

✕ Java 8
// Old NPE message:
// "NullPointerException"
// at MyApp.main(MyApp.java:42)
// Which variable was null?!
✓ Java 14+
// Modern NPE message:
// Cannot invoke "String.length()"
// because "user.address().city()"
// is null
// Exact variable identified!
Заметили проблему в этом коде? Сообщите нам.
🔍

Точная переменная

Сообщение указывает переменную null в цепочке вызовов.

Более быстрая отладка

Больше не нужно гадать, какой из пяти цепочечных вызовов вернул null.

🆓

Бесплатное улучшение

Никаких изменений в коде — достаточно запустить на JDK 14+.

Старый подход
Криптичная NPE
Современный подход
Подробная NPE
Начиная с JDK
14
Сложность
Начинающий
Информативные NullPointerExceptions
Доступно

Доступно в JDK 14 (март 2020)

Информативные NPE описывают, какое выражение было null и какая операция завершилась ошибкой. По умолчанию включено начиная с Java 14 — изменений в коде не требуется, достаточно обновить JDK.