【发布时间】:2014-08-27 10:09:13
【问题描述】:
我在带有 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;
我不确定这里的异常处理是否正确。
首先:
- 我不抛出任何已检查的异常(HibernateException 也未检查)。
- 但是我需要捕获所有异常,因为无论如何我都想向用户显示带有通知错误的同一页面(而不是错误页面)。
- 在我的 DAO 中,我没有捕获或重新抛出任何异常。
我的问题是:
- 以这种方式捕获和处理异常可以吗?
- 我还应该在控制器中单独捕获 HibernateException 吗?
- 我应该做的不仅仅是记录吗?
- 我是否也应该在 DAO 中捕获异常然后重新抛出它?是否应该向控制器重新抛出不同类型的异常?
【问题讨论】: