У меня есть пакетное задание, которое обрабатывает огромное количество данных.Задание в основном получает данные из исходной базы данных и выполняет вызов веб-службы, а затем записывает данные в целевую базу данных.Сегодня я столкнулся с «NPE», где я проверяю XML для ответа «успеха».Я проверяю один из узлов, чтобы определить, является ли ответ успешным или неудачным.Я могу попытаться поймать блок, но мне нужно знать, является ли это правильным и эффективным подходом.
Код
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource source = new InputSource();
source.setCharacterStream(new StringReader(response));
Document document = builder.parse(source);
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodeList = document.getElementsByTagName(DCDirectProcessorConstants.Tag_Response_getValue);
Node node = nodeList.item( 0 ).getAttributes().getNamedItem(DCDirectProcessorConstants.Tag_Response_Status);
`Node node = nodeList.item( 0 ).getAttributes().getNamedItem(DCDirectProcessorConstants.Tag_Response_Status);` line throws NPE.
Трассировка стека
java.lang.NullPointerException at com.mercuryinsurance.r3.util.MigrationExecutorThread.run(MigrationExecutorThrea .java:96) [migration.jar:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_66] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_66] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66]
Так что в этой строке я просто проверяю, является ли значение тега успешным«Не уверен, что это хороший подход - использовать блок try и catch для обработки NPE.Пожалуйста, совет
Спасибо