【发布时间】:2018-04-15 21:03:53
【问题描述】:
我们创建了一个扩展 AbstractPaginatedDataItemReader 的自定义项目阅读器。 Spring-batch 允许管理哪些异常停止或不是作业(跳过的异常)。
在“经典”spring-batch 阅读器中,doRead 方法会抛出任何 Exception。这意味着,如果在读取过程中引发了跳过的异常,则会跳过该项目并继续运行作业。
但在分页阅读器中,用于检索下一个数据页的 doPageRead 方法不会引发任何异常:
protected abstract Iterator<T> doPageRead();
doPageRead方法被doRead一调用:
protected T doRead() throws Exception {
synchronized (lock) {
if(results == null || !results.hasNext()) {
results = doPageRead();
page ++;
if(results == null || !results.hasNext()) {
return null;
}
}
if(results.hasNext()) {
return results.next();
}
else {
return null;
}
}
}
由于doPageRead 方法没有声明任何抛出的异常,这意味着配置的跳过异常只能是RuntimeException?
谢谢
【问题讨论】:
标签: spring-boot exception-handling pagination spring-batch