Мне было интересно, есть ли способ сбросить состояние всех локальных переменных, когда есть исключение, чтобы лучше понять состояние среды, вызвавшее исключение. Ниже переменной idsToDump
неизвестно во время выполнения, и я хочу узнать состояние, при котором значение в коллекции вызывает NPE.
Пример:
public static void main(String[] args) {
HashMap<Integer, String> employees = new HashMap<Integer, String>();
employees.put(1, "James");
Integer[] idsToDump = new Integer[] { 1, 2, 3 };
for (Integer employeeId : idsToDump) {
String name = employees.get(employeeId).toLowerCase();
System.out.println(name + " is employee number: " + employeeId);
}
}
выход:
james is employee number: 1
Exception in thread "main" java.lang.NullPointerException
Вопрос: Есть ли какой-нибудь аргумент JVM, который я могу передать для дампа информации о текущем состоянии локальных переменных? т.е. получим
java.lang.NullPointerException
и (это та часть, которая мне нужна)
values: employeeId=2
Я хочу иметь возможность сделать это на клиентском сайте, поэтому доступ к инструментам Eclipse или отладки, ищущим только аргументы JVM, также не может изменять код. Я просмотрел их, но ничего не мог найти. Тем временем я продолжу искать там тоже;)