Как и Томас, я не знаю ни одного текущего метода, который может выводить переменные. Тем не менее, я считаю, что вы хотите сделать это, чтобы помочь вам в вашей отладке. Вот несколько простых методов, которые я использую для отладки своего кода, используя только консоль:
1.Учитесь читать трассировку стека при возникновении исключения. Это дает вам много информации о том, что может быть причиной исключения. Если конкретная строка, на которую указывает трассировка стека, кажется, не имеет ничего неправильного, отследите код и посмотрите, был ли это предыдущий объект, который вызывает исключение. Например (используя пример кода и методы):
Book book = null;
Bookshelf bookshelf = new Bookshelf();
bookshelf.add(book);
bookshelf.getBooks();
Нечто подобное заставит трассировку стека NPE указывать на bookshelf
, но на самом деле это book
вызывает NPE.
2. Распечатайте переменные, которые, как вы подозреваете, вызывают NPE.
for (Integer employeeId : idsToDump) {
System.out.println(employeeId);
String name = employees.get(employeeId).toLowerCase();
System.out.println(name + " is employee number: " + employeeId);
}
Ваш вывод будет:
1
2
И тогда вы узнаете, что 2
вызывает NPE.
3.Закомментируйте подозрительный код и систематически раскомментируйте код, пока не произойдет исключение, или наоборот.
Хотя вы можете иногда находить это утомительным и разочаровывающим, это действительно помогает в вашей основе, потому что при достаточной практике вы скоро сможете интуитивно определить, где обычно возникает ошибка (и, следовательно, тратить меньше времени на дальнейшую отладку) .