我有一个DAO方法,用于捕获异常以执行事务的回滚。
public void edit(Employees em) {
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
try {
s.beginTransaction();
s.update(em);
s.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
s.getTransaction().rollback();
}
}
在前端,我正在调用它。
public String save() {
Employee_dao dao = new Employee_dao();
dao.edit(emp);
return "index";
}
但是,我想在前端捕获异常,因此我可以向最终用户显示消息。如何在执行回滚的同时实现此目的?
答案 0 :(得分:1)
您可以简单地重新抛出异常,甚至可以将其包含在包含更多信息的异常中(如果您需要在前端处提供更多信息):
public void edit(Employees em) throws Exception {
// ...
try {
s.beginTransaction();
// ...
} catch (Exception e) {
s.getTransaction().rollback();
throw e;
// or throw new MyException("edit failed", e);
// or throw new RuntimeException(...);
}
}
public String save() {
Employee_dao dao = new Employee_dao();
try {
dao.edit(emp);
return "index";
} catch (Exception e) {
return "error";
}
}