我想捕获从项目读取器引发的异常(例如读取器未打开,不正确的令牌异常等)并进行处理。当前,春季批处理将它们作为致命的异常抛出,并脱离了这一步。
请告诉我是否有任何方法可以做到?
我遇到了同样的问题,即我想赶上
org.springframework.batch.item.file.FlatFileParseException
抛出的错误FlatFileItemReader
并执行一些自定义处理和日志记录。经过一些研究,几乎得出结论,我可能不得不编写一个自定义阅读器,而不是我当前使用的默认阅读器,直到我偶然发现了Spring Batch文档中某个部分的精髓:http://docs.spring。 io / spring-batch / reference / html / configureStep.html#interceptingStepExecution
您可以编写ItemReadListener
接口的自定义实现并重写该onReadError(Exception ex)
方法,然后在相应的步骤中注册此侦听器类。这样,当读取器从文件读取时遇到异常时,将调用此方法。异常引用也将传递给该方法,您可以使用该异常引用来进行日志记录等操作。同样,@OnReadError
如果您不想ItemReadListener
单独实现该接口,则编写带注释的方法也是一种选择。
另一方面,如果您的全部目的是跳过读取时可能发生的此类异常,则可以尝试在XML中的块配置中添加以下内容:
参考:http : //docs.spring.io/spring-batch/reference/html/configureStep.html#configuringSkip
问题解决了!:)