我正在尝试找出使用Closeable资源对异常执行回滚的最佳方法。
说我有这个代码:
=AGGREGATE(14,6,$B$2:$B$20/($A$2:$A$20=A2),1)
如果有异常,我想回滚该事务,但是在我的示例中,该事务已经在catch中关闭,因为已经调用了close(在close之后执行catch块)。
如何使用需要回滚的Closeable对象,或者我应该使用旧样式try / catch并自行关闭资源?
答案 0 :(得分:1)
以下是我的评论:尝试在try(Closeable){}中添加一个try / catch?
public <T> void saveOrUpdate(final T o) {
try (Session session = HibernateSessionFactoryUtil.getSession()) {
Transaction transaction;
try {
transaction = session.beginTransaction();
session.saveOrUpdate(o);
if (transaction != null)
transaction.commit();
} catch (Exception re) {
if (transaction != null)
transaction.rollback();
throw re;
}
}
}