Мне интересно, есть ли способ сбросить состояние всех локальных переменных при возникновении исключения, чтобы получить лучшее представление о состоянии среды, вызвавшей исключение. Ниже переменная idsToDump
неизвестна во время выполнения, и я хочу узнать состояние, при котором значение в коллекции вызывает NPE.
Example:
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);
}
}
output:
james is employee number: 1
Exception in thread "main" java.lang.NullPointerException
Question: Есть ли какой-то аргумент JVM, который я могу передать, чтобы получить информацию о текущем состоянии локальных переменных? Т.е. мы получаем
java.lang.NullPointerException
и (это та часть, которая мне нужна)
values: employeeId=2
Я хочу иметь возможность сделать это на сайте клиента, поэтому нет доступа к Eclipse или инструментам отладки, ищу только аргументы JVM, также не могу вносить изменения в код. Я просмотрел их, но не смог ничего найти. Тем временем я буду продолжать искать там же ;)