Java 在批处理运行期间检查NPE

Java 在批处理运行期间检查NPE,java,nullpointerexception,spring-batch,Java,Nullpointerexception,Spring Batch,我有一个处理大量数据的批处理作业。作业基本上从源数据库获取数据,进行web服务调用,然后将数据写入目标数据库。 今天我遇到了“NPE”,在这里我检查XML的“成功”响应。我检查其中一个节点以确定响应是成功还是失败。 我可以试着去做,但我需要知道这是否是正确有效的方法 代码 堆栈跟踪 com.mercuryinsurance.r3.util.MigrationExecutorThread.run(MigrationExecutorThrea.java:96)[migration.jar:?]位于j

我有一个处理大量数据的批处理作业。作业基本上从源数据库获取数据,进行web服务调用,然后将数据写入目标数据库。 今天我遇到了“NPE”,在这里我检查XML的“成功”响应。我检查其中一个节点以确定响应是成功还是失败。 我可以试着去做,但我需要知道这是否是正确有效的方法

代码

堆栈跟踪

com.mercuryinsurance.r3.util.MigrationExecutorThread.run(MigrationExecutorThrea.java:96)[migration.jar:?]位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[?:1.8.066]位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[?:1.8.066]在java.lang.Thread.run(Thread.java:745)[?:1.8.0_66]

因此,在这一行中,我只是检查标记的值是否为“success”,不确定使用try-and-catch块来处理NPE是否是一种好方法。请指教


谢谢

如果愿意,您可以使用try-catch块,但是在调用父对象上的任何方法之前,只检查父对象是否为null可能会更干净、更高效,例如

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

但是,您可能希望将整个过程包装在一个try-catch中,因为在某些情况下,这些方法可能会抛出NPE以外的其他异常。

很有意义。在批处理作业期间,我没有看到任何异常。今天,它发生在作业刚开始时。
nodeList.item(0)
假定列表中有一个项。可能这就是导致NPE的原因。在这里,我会更具防御性,在从列表中获取元素之前检查列表是否为空。这可能在没有try/catch块的情况下工作。
if (null != document) {
    NodeList nodelist = document...
}