Я только что нашел очень странный NullPointerException
. Во-первых, я создаю NumberFormat
как это (обратите внимание, что по умолчанию Locale
будет Германия, я не знаю, если это помогает):Почему NumberFormat.format выбрасывает исключение NullPointerException?
NumberFormat angleFormat = NumberFormat.getNumberInstance(Locale.UK);
angleFormat.setMaximumFractionDigits(5);
angleFormat.setMinimumFractionDigits(0);
Затем я попытался отформатировать двойной с ним. Это делается с помощью нового потока, созданного Lambda, тогда как angleFormat
объявлен по методу, содержащему Lambda. Код, где брошено Исключение выглядит следующим образом:
con.println("D" + moveId + (state.isEnemyInSightOf(e) ? "+" : "-")
+ angleFormat.format(e.getAngle()) // line 123 - error is here
+ (state.isMissileInSightOf(e) ? "+" : "-")
+ angleFormat.format(e.getSight())
+ (e.getLastShot() >= 10 || e.getLastShot() <= -1 ? "+" : "-")
+ angleFormat.format(e.getLives()));
e.getAngle()
возвращает double
, поэтому он не может возвращать нуль. Тем не менее, я получаю это исключение:
Exception in thread "Thread-1" java.lang.NullPointerException
at java.text.DecimalFormat.fastDoubleFormat(Unknown Source)
at java.text.DecimalFormat.fastFormat(Unknown Source)
at java.text.NumberFormat.format(Unknown Source)
at server.game.Simulator.lambda$0(Simulator.java:123)
at server.game.Simulator$$Lambda$3/23162747.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Я уверен, что e
не равно нулю из-за StackTrace за исключением, было бы а) быть выброшены одна линия раньше и б) не java.text.DecimalFormat.fastDoubleFormat
Почему есть NullPointerException
beeing thrown иногда, а иногда он работает без проблем? И что это значит? Ошибка, кажется, воспроизводима, но не очень часто.
что это за строка 123? –
'' Исключение NullPointerException иногда, а иногда это работает без проблем? И что это значит? "' - эта прерывистая ошибка пахнет проблемой потоковой передачи. Это графический интерфейс? Вы внимательно относитесь к потоку вашего кода? –
Вы уверены, что 'e' не является' null'? – Mureinik