如何在提交/回滚方法中更改自动提交模式时处理异常?

时间:2015-04-23 19:55:47

标签: java exception-handling transactions

我正在写一个提交事务的方法。如果发生错误,我想抛出异常CommitTransactionException。所以这将是方法:

public void commitTransaction() throws CommitTransactionException {
    try {
        connection.commit();
    } catch (SQLException sqle) {
        throw new CommitTransactionException(sqle);
    }
}

现在无论提交成功还是失败,我还想将自动提交模式设置为true。所以我在考虑在这个方法中添加一个finally块,我将Autocommit模式设置为true:

finally {
   connection.setAutoCommit(true);
}

但问题是setAutoCommit方法可以抛出异常SQLException所以如何处理该异常?

我想的一种方法是将异常SQLExceptionsetAutoCommit方法转换为CommitTransactionException异常:

public void commitTransaction() throws CommitTransactionException {
    try {
        connection.commit();
    } catch (SQLException sqle) {
        throw new CommitTransactionException(sqle);
    } finally {
        try {
            connection.setAutoCommit(true);
        } catch (SQLException sqle) {
            throw new CommitTransactionException(sqle);
        }
    }
}

但是,即使Commit成功并且设置Autocommit模式失败,调用者也会认为Commit失败了。

这种类型的东西通常用Java来处理?

0 个答案:

没有答案