springMVC异常处理
@Component public class ExceptionResolver implements HandlerExceptionResolver { public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { System.out.println("异常处理器正在执行中"); ModelAndView modelAndView = new ModelAndView(); //定义异常现象出现后,反馈给用户查看的信息 modelAndView.addObject("msg","出错啦! "); //定义异常现象出现后,反馈给用户查看的页面 modelAndView.setViewName("error.jsp"); return modelAndView; } }
2、根据异常的种类不同,进行分门别类的管理,返回不同的信息
public class ExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { System.out.println("my exception is running ...."+ex); ModelAndView modelAndView = new ModelAndView(); if( ex instanceof NullPointerException){ modelAndView.addObject("msg","空指针异常"); }else if ( ex instanceof ArithmeticException){ modelAndView.addObject("msg","算数运算异常"); }else{ modelAndView.addObject("msg","未知的异常"); }
//setViewName跳转页面 modelAndView.setViewName("error.jsp"); return modelAndView; } }
@Component @ControllerAdvice public class ExceptionAdvice { }
@Component @ControllerAdvice public class ProjectExceptionAdvice { @ExceptionHandler(BusinessException.class) public String doBusinessException(Exception ex, Model m){ //使用参数Model将要保存的数据传递到页面上,功能等同于ModelAndView //业务异常出现的消息要发送给用户查看 m.addAttribute("msg",ex.getMessage()); return "error.jsp"; } @ExceptionHandler(SystemException.class) public String doSystemException(Exception ex, Model m){ //系统异常出现的消息不要发送给用户查看,发送统一的信息给用户看 m.addAttribute("msg","服务器出现问题,请联系管理员!"); //实际的问题现象应该传递给redis服务器,运维人员通过后台系统查看 //实际的问题显现更应该传递给redis服务器,运维人员通过后台系统查看 return "error.jsp"; } @ExceptionHandler(Exception.class) public String doException(Exception ex, Model m){ m.addAttribute("msg",ex.getMessage()); //将ex对象保存起来 return "error.jsp"; } }
爱你哦
浙公网安备 33010602011771号