我在Spring和Hibernate的MVC应用程序中有以下控制器:
@RequestMapping(value = { "/mypage"}, method = RequestMethod.POST)
public ModelAndView showPage(Model model, HttpServletRequest request) {
ModelAndView mv = new ModelAndView();
try {
// Here I call a Service and then a DAO, where I can get HibernateException
} catch (Exception ex) {
ex.printStackTrace();
}
mv.setViewName("mypage");
return mv;
我不确定这里是否正确处理了异常。
首先:
我的问题是:
答案 0 :(得分:0)
HibernateException 封装了实际的根本原因,而不是为您提供足够的信息来生成有意义的用户友好消息。阅读documentation。
的“异常处理”部分如果Session抛出异常,包括任何SQLException, 立即回滚数据库事务,调用Session.close() 并丢弃Session实例。 Session的某些方法不会 使会话保持一致状态。没有例外 Hibernate可以被视为可恢复的。
这意味着除了捕获异常以进行转换或将其包装到另一种异常中之外,捕获异常对您无效:使用会话后无论如何都无法正常工作。
参考this