数据库查询失败时,异常不会抛出Spring Batch中的Writer

时间:2017-05-09 08:18:09

标签: java spring-batch

我正在为我的一个ETL项目使用Spring Batch。我面临的问题是在作家步骤中。以下是它的代码段:

public void write(List<? extends Employee> employeeList) throws Exception {

    for (Employee emp : employeeList) {
       try {
          employeeService.insertEmployeeBasicDetails(emp);
          employeeService.insertEmployeeCompensationDetails(emp);  
       } catch(Exception e) {
          log.error(e);
       }            
    }
}

如果在第一次服务呼叫期间插入时出错,则不会发出异常,但会转移到第二次呼叫。完成所有这些调用之后,它会抛出一个错误,但现在没有catch块来捕获错误并且我的作业无法重新启动。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

你的try块'可能没有给出异常',因为没有抛出任何异常。使用给定的代码,对于write方法抛出未捕获的异常,它不在try块中 - 在这种情况下是catch块内。如果这是你的所有代码,那么考虑在catch块中放置一个断点并检查log.error(e);是否不会抛出异常。