我想捕获项目阅读器抛出的异常(例如阅读器未打开、不正确的 token 异常等)并处理它。目前 Spring Batch 正在将它们作为致命异常抛出并退出该步骤。
请问有什么办法可以做到吗?
最佳答案
我遇到了同样的问题,我想捕获
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
带注释的方法也是一种替代方法。 单独的接口(interface)。
换句话来说,如果您的全部目的是跳过阅读时可能发生的此类异常,您可以尝试将以下内容添加到 XML 中的 block 配置中:
<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
问题解决了! :)
关于exception - 如何处理项目读取器抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34435817/