exception - 如何处理项目读取器抛出的异常?

标签 exception spring-batch reader

我想捕获项目阅读器抛出的异常(例如阅读器未打开、不正确的 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/

相关文章:

python - 空列表的安全 max() 函数

python - 在 python 中,如何让我自己的异常类在 shell 中漂亮地打印出来?

java - Spring batch JDBCPagingItemReader、ThreadPoolTask​​Executor 和 OpenShift 中的多个 pod

Spring @Transactional 和 JDBC 自动提交

java - 如何在 Spring Batch 中链接多个 ItemReader?

java - 如何实现自定义 FilterReader?

java.util.AbstractList.remove 处的 java.lang.UnsupportedOperationException(未知来源)

exception - Matlab的内置函数可以抛出哪些异常,有没有权威的引用资料?

java - 读取器类误读了 txt(保存的每个字符串末尾为 0false)

C Reader Writer程序,一个reader并没有读取所有数据