我使用reader在spring批处理中读取db表中的数据。
如果表不存在,我想处理JdbcSQLException
并记录错误。我试图在读者中捕获异常,但我无法捕获异常。我应该在哪里抓到它?
答案 0 :(得分:0)
使用JobExecutionDecider检查表格是否存在。
如果表格不存在,则记录错误并移至作业结束,否则继续正常工作。
答案 1 :(得分:0)
您可以在读者身上声明ItemReadListener
:
<batch:step>
<batch:tasklet>
<batch:chunk reader="reader" writer="writer" />
<batch:listeners merge="true">
<batch:listener>
<bean class="xx.xx.xx.YourListener"/>
</batch:listener>
</batch:listeners>
</batch:tasklet>
</batch:step>
在这个监听器中,您可以使用3种方法:
public class YourListener<T> implements ItemReadListener<T> {
@Override
public void beforeRead() {}
@Override
public void afterRead(T item) {}
@Override
public void onReadError(Exception ex) {}
}
现在针对您的情况,您需要检查方法onReadError
中的异常类型:
@Override
public void onReadError(Exception ex) {
if (ex instanceof JdbcSQLException) {
// Do your thing
}
}