У меня есть метод, который выглядит следующим образом:Невозможно определить, что бросает исключение, NullPointer
try {
doStuff();
} catch (Exception ex) {
logger.error(ex);
}
(я действительно не использовать имена методов, как DoStuff - это просто, чтобы сделать вещи легко)
в DoStuff я делаю множество вещей, среди них есть вызов метода доступа к данным (так, другой метод в DoStuff), который заканчивается следующим:
} catch (SQLException ex) {
logger.error(ex);
} finally {
try {
connection.close();
proc.close();
results.close();
} catch (Exception e) {
logger.error(e);
} //<--Exception thrown here. HUH?
}
return stuff;
Когда пошагового этого кода я получаю к второй, чтобы последний фигурный скобок (отмечен комментарием), а затем подпрыгните до улова в первом блоке кода с помощью исключения NullPointer. results.close()
- это то, что выполняется прямо перед ним (результаты не равны нулю). Моя IDE (NetBeans) не предоставляет трассировку стека (она показывает, что трассировка стека равна нулю) или любую другую информацию, отличную от имени исключения (из того, что я могу сказать).
Этот код работал нормально. Фактически во время работы я изменил хранимая процедура, что метод доступа к данным (где я получаю это исключение) вызывал, а затем эта ошибка начиналась (без того, что приложение вообще остановилось). С тех пор я попытался восстановить и перезапустить, но безрезультатно. Я мог бы изменить sproc назад, но я действительно хочу узнать, что это за ошибка, поскольку нет никакого смысла, что sproc даже будет частью этого, учитывая, где в коде возникает исключение.
Что показывает ex.printStackTrace()? –
Глупый вопрос, но «logger» null? –
Я попробую попробовать, но браузер переменных показывает, что stackTrace имеет значение NULL. Также @Matt-logger действительно инициализирован в обоих методах, упомянутых выше. Во втором случае он даже не пытается ввести этот блок исключений (обычно при переходе через него он захватывает catch, а затем вводит - это идет от результатов, чтобы привязываться к улову первого метода). –