如何处理从项目读取器引发的异常?

Gop*_*opi 4 exception spring-batch reader

我想捕获从项目读取器引发的异常(例如读取器未打开,不正确的令牌异常等)并进行处理。当前,春季批处理将它们作为致命的异常抛出,并脱离了这一步。

请告诉我是否有任何方法可以做到?

小智 5

我遇到了同样的问题,即我想赶上 org.springframework.batch.item.file.FlatFileParseException 抛出的错误FlatFileItemReader并执行一些自定义处理和日志记录。经过一些研究,几乎得出结论,我可能不得不编写一个自定义阅读器,而不是我当前使用的默认阅读器,直到我偶然发现了Spring Batch文档中某个部分的精髓http://docs.spring。 io / spring-batch / reference / html / configureStep.html#interceptingStepExecution

您可以编写ItemReadListener<T>接口的自定义实现并重写该onReadError(Exception ex)方法,然后在相应的步骤中注册此侦听器类。这样,当读取器从文件读取时遇到异常时,将调用此方法。异常引用也将传递给该方法,您可以使用该异常引用来进行日志记录等操作。同样,@OnReadError如果您不想ItemReadListener单独实现该接口,则编写带注释的方法也是一种选择。

另一方面,如果您的全部目的是跳过读取时可能发生的此类异常,则可以尝试在XML中的块配置中添加以下内容:

<skippable-exception-classes>
     <include class="org.springframework.batch.item.file.FlatFileParseException"/>
</skippable-exception-classes>
Run Code Online (Sandbox Code Playgroud)

参考:http : //docs.spring.io/spring-batch/reference/html/configureStep.html#configuringSkip

问题解决了!:)