一、步骤
1.编写自定义异常处理类(做提示信息的)
2.编写异常处理器
3.配置异常处理器(跳转到友好的提示页面)
二、案例
1、
@Controller @RequestMapping("/user") public class UserController { @RequestMapping("/testException") public String testException() throws Exception{ System.out.println("/testException.........."); try{ //模拟异常 int a = 10 / 0; }catch (Exception e){ e.printStackTrace(); throw new SysException("被零除了。。。。。"); } return "success"; } }
2、
public class SysException extends Exception{ //存储提示信息 private String message; @Override public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public SysException(String message) { this.message = message; } }
3、
//异常处理器类,需要实现特定的接口 public class SysExceptionResolver implements HandlerExceptionResolver { /** * 处理异常业务逻辑 */ @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) { //获取异常对象,ex SysException e = null; if(ex instanceof SysException){ e = (SysException)ex; }else { e = new SysException("系统在维护。。。"); } //创建ModelAndView对象,可以跳转到要去的页面 ModelAndView mv = new ModelAndView(); //加入错误信息 mv.addObject("errorMsg",e.getMessage()); //配置调到哪里error.jsp页面等 mv.setViewName("error"); return mv; } }
4、
<!--配置异常处理器--> <bean id="sysExceptionResolver" class="cn.rzpt.exception.SysExceptionResolver"/>
5、
error.jsp
${errorMsg}
6、springmvc.xml配置
<!-- 开启注解扫描 --> <context:component-scan base-package="cn.rzpt"/> <!-- 视图解析器对象 --> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!--前端控制器,哪些静态资源不拦截--> <mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/images/" mapping="/images/**"/> <mvc:resources location="/js/" mapping="/js/**"/>