如何处理从项目阅读器抛出的异常?

时间:2015-12-23 12:33:09

标签: exception spring-batch reader

我想捕获从项目阅读器抛出的异常(例如,阅读器未打开,不正确的令牌异常等)并处理它。目前,春季批次将它们作为致命的除外,并且走出了这一步。

如果有办法,请告诉我?

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我想赶上      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>

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

问题解决了! :)