7.SpringMVC自定义异常类
1. 异常处理的思路
在java中,对于异常的处理一般有两种方式:
-
一种在当前方法捕获处理(try-catch),这种处理方式会造成业务代码和异常处理代码的耦合。 -
另一种是自己不处理,而是抛给调用者处理(throws),调用者在抛给它的调用者,也就是往上抛。这种方法的基础上,衍生除了SpringMVC的异常处理机制。
系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:
2. 自定义异常处理器
步骤分析:
- 创建异常处理器类实现handlerExceptionResolver
- 配置异常处理器
- 编写异常页面
- 测试异常跳转
(1)创建异常处理器类实现handlerExceptionResolver
public class GlobalExeceptionResovler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
ModelAndView model = new ModelAndView();
model.addObject("error",e.getMessage());
model.setViewName("error");
return model;
}
}
(2)在Spring的配置文件配置异常处理器
<bean id="globalExecptionResovler" class="com.weihong.excption.GlobalExeceptionResovler"/>
(3)编写异常页面
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>这是一个错误页面</h2>
<h5>错误信息为:${error}</h5>
</body>
</html>
(4)测试异常跳转
@RequestMapping("/jumpErrorPage")
public String jumpErrorPage(){
int res = 10 / 0;
return "success";
}
(5)测试结果
3. web的处理异常机制
-
当请求状态为404或者500,指定页面跳转。 -
在其web.xml配置如下:
<!--处理500异常-->
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
<!--处理404异常-->
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
|