Выгрузка состояния переменных при исключении

Мне интересно, есть ли способ сбросить состояние всех локальных переменных при возникновении исключения, чтобы получить лучшее представление о состоянии среды, вызвавшей исключение. Ниже переменная 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, также не могу вносить изменения в код. Я просмотрел их, но не смог ничего найти. Тем временем я буду продолжать искать там же ;)

13
задан user1160931 20 January 2012 в 16:09
поделиться