【问题标题】:How to handle the exceptions thrown from item reader?如何处理从项目阅读器抛出的异常?
【发布时间】:2016-03-29 21:31:15
【问题描述】:

我想捕获从项目阅读器抛出的异常(例如阅读器未打开、不正确的令牌异常等)并处理它。目前春季批次正在将它们作为致命的异常抛出并退出。

请问有什么办法吗?

【问题讨论】:

  • 实施跳过策略或扩展总是跳过类。它充当异常处理程序。您可以在此基础上执行所有操作,例如写入文件。方法应该跳过验证布尔值,真正的平均步骤将继续,否则步骤将停止。

标签: exception spring-batch reader


【解决方案1】:

我遇到了同样的问题,我想抓住 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) 方法,然后在相应的步骤中注册此侦听器类。因此,当阅读器在读取文件时遇到异常时,将调用此方法。异常引用也将传递给方法,您可以使用它来做您喜欢的日志记录等。 同样,如果您不想单独实现 ItemReadListener 接口,也可以编写一个 @OnReadError 带注释的方法。

另一方面,如果您的全部目的是跳过阅读时可能发生的此类异常,您可以尝试在 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

问题解决了! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多