如果我们程序发生了异常,会按照下面流程执行。 把异常显示在浏览器会显得系统十分不完善,我们自定义SpringMVC的异常处理器来显示统一页面给用户提示。 在捕获异常时,抛出自定义的异常类
@RequestMapping("/exception") public String testException() throws SysException{ try { int a = 10/0; } catch (Exception e) { e.printStackTrace(); SysException se = new SysException(); se.setMessage("系统错误,请稍等!"); throw se; } return "success"; }第一步:编写自定义异常类
/* * 自定义异常类 * */ public class SysException extends Exception{ private String Message; @Override public String getMessage() { return Message; } public void setMessage(String message) { Message = message; } public SysException(String message) { Message = message; } public SysException() { } }第二步:编写异常处理器
// 自定义异常处理器 public class CustomExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) { // 获取到异常对象 SysException se = null; // 如果不是自定义异常,强转赋值,如果是封装信息. if(e instanceof SysException) { se = (SysException)e; } else { se = new SysException("系统正在维护"); } // 返回值是ModelAndView类型,可以通过该对象进行跳转到指定错误页面 ModelAndView mv = new ModelAndView(); mv.addObject("Message",se.getMessage()); mv.setViewName("error"); return mv; } }第三步:配置异常处理器
<!-- 配置异常处理器 --> <bean id="customExceptionResolver" class="cn.Exception.CustomExceptionResolver"></bean>再次发生错误,即可跳转到指定的错误界面。