我面临着一个非常特殊的情况。我正在使用带有 spring 3.0.5 的休眠模板进行数据库操作。当我第一次尝试插入用户模型时,抛出了一个 DataAccessException,我抓住了它。现在我希望重试相同的数据库操作 3 次。第二次时,没有抛出异常。
这是代码:
package com.user.profile.dao;
@Repository("userProfileDAOImpl")
public class UserProfileDAOImpl implements IUserProfileDAO {
@Autowired
private HibernateTemplate hibernateTemplate;
public Long insertUserProfileData(User user) throws AppNonFatalException {
Long id = null;
int retryCount = 0;
while (retryCount < 3) {
try {
id = (Long)hibernateTemplate.save(user);
}
catch (DataAccessException e) {
e.printStackTrace();
retryCount++;
System.out.println("Retry Count = " + retryCount);
if (retryCount > 3) {
throw new AppNonFatalException(e.getLocalizedMessage(), "10000", e.getMessage(), e);
}
}
catch (Exception e) {
/* not coming inside this block too second time onwards */
System.out.println("Pure Exception");
}
}
return id;
}
}
我读到不应捕获 RuntimeExceptions。那我该如何重试操作。我应该在服务层重试吗?我错过了什么吗?任何帮助表示赞赏。