Подскажите пожалуйста: если я немного изменю метод printBugMethodName(), чтобы посмотреть весь стекТрэйс вот так:
public static void printBugMethodName(StackTraceElement[] stackTraceElements) {
for(StackTraceElement stackTraceElement : stackTraceElements)
System.out.println(stackTraceElement.getMethodName());
}
и в блоке catch напишу вот так:
catch (Exception e) {
printBugMethodName(e.getStackTrace());
}
(знаю, что это неправильное решение...)
то увижу на консоли вот такие методы:
requireNonNull
put
put
addJuice
makeScrewdriver
main
{ice cubes=7, orange slice=1, vodka=50}
откуда берутся requireNonNull и второй раз put? Один раз put понятно.
AlexTop
26 уровень
Откуда берутся методы requireNonNull и 2 раза put при выводе всего stackTrace?
Решен
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
20 января 2022, 17:25
Это зависит от версии JDK.
В более новых проверка ключа на null в методе put() у TreeMap выполняется с помощью метода Objects.requireNonNull()
А в более ранних - просто с помощью if (key == null) ...
+1
AlexTop
20 января 2022, 17:31
А второй метод put() откуда?
0
Ksenia VolkovaJava Developer в DXCMaster
20 января 2022, 17:39решение
Тоже из TreeMap
Можешь посмотреть, как метод put вылядит в TreeMap в твоей JDK
+2
PixtaExpert
20 января 2022, 13:51
Сложно ответить, т.к. не всем доступен код для просмотра, выкладывайте сразу в вопросе код, который запускаете.
0
AlexTop
20 января 2022, 16:02
Таков код...
+1
PixtaExpert
20 января 2022, 16:25
У меня не выводит ваш метод)) все корректно
0
PixtaExpert
20 января 2022, 16:27
во время put у вас вылетает NullPointer и дальше к Main выводит
0
AlexTop
20 января 2022, 16:52

0
PixtaExpert
20 января 2022, 17:22
У вас 17 версия Java.
У меня нет возможности проверить. Похоже что-то добавили, т.к. я на 8 запускаю.
0