Проверка NPE во время серийного запуска - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть пакетное задание, которое обрабатывает огромное количество данных.Задание в основном получает данные из исходной базы данных и выполняет вызов веб-службы, а затем записывает данные в целевую базу данных.Сегодня я столкнулся с «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.Пожалуйста, совет

Спасибо

1 Ответ

0 голосов
/ 26 сентября 2018

Вы можете использовать блок try catch, если хотите, но может быть чище и эффективнее просто проверить, является ли родительский объект нулевым, прежде чем вызывать какие-либо методы для него, т.е.

if (null != document) {
    NodeList nodelist = document...
}

. Вы можетеоднако я хочу обернуть все это в попытку, потому что эти методы могут вызывать другие исключения, кроме NPE, в определенных обстоятельствах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...