executeBatch异常处理

时间:2014-02-15 04:30:15

标签: java sql jdbc

executeBatch()将抛出两个异常SQLException和BatchUpdateException。需要有关如何处理此异常的帮助。

我们正在为分布式环境执行900批量限制和150个提交限制。仅处理了唯一的BatchUpdateException。以下是代码段。有人可以指导我们是否需要捕获SQLException。如果未捕获SQLException,结果是什么。

抛出:     SQLException - 如果发生数据库访问错误,则在已关闭的Statement上调用此方法,或者驱动程序不支持批处理语句。 ---这句话意味着什么。

} catch (BatchUpdateException be) {

    status = "failure";
    errorDesc = "BatchUpdateException";
    errorCode = "-1";
    checkpoint = "12";
    log.debug(DealerId + "->BatchException be:" + be + ", checkpoint: " + checkpoint
            + ",con: " + con + ",db2con: " + db2Con);

    int[] updateStatus = be.getUpdateCounts();

    if (updateStatus != null) {
        ArrayList<String> failedList = new ArrayList<String>();
        try {
            verifyUpdateCount(updateStatus, failedList, batchQueryList, queryList);

        } catch (Exception e) {
            if (failedList.size() > 0) {
                log.debug(DealerId + "->updateStatus Exception queryList size:"
                        + queryList.size());
                queryList.clear();
                queryList.addAll(failedList);
            }
            log.debug(DealerId + "->updateStatus Exception e:" + e + ", checkpoint: "
                    + checkpoint + "con: " + con + "db2con: " + db2Con);
        }
    }
    break END;
} finally {
    try {
        log.debug("norecords:" + noRecords);
        if (!noRecords) {
            closeStatements(ps, rs, rsShdw, db2Ps, stShdw);
        }
    } catch (Exception e) {
        printCheckpoint(queryList, con, db2Con, "closeStatements Exception e: ", e,
                checkpoint);
    }
}

1 个答案:

答案 0 :(得分:0)

  

抛出:SQLException - 如果发生数据库访问错误,则在已关闭的Statement上调用此方法,或者驱动程序不支持批处理语句。 ---这句话意味着什么。

我不知道它是否比这更简单。你不明白哪一部分?

它表示该方法在以下某种情况下抛出SQLException

  • 发生数据库访问错误,
  • 此方法在已关闭的Statement
  • 上调用
  • 驱动程序不支持批处理语句。