如果我们程序发生了异常,会按照下面流程执行。
把异常显示在浏览器会显得系统十分不完善,我们自定义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>
再次发生错误,即可跳转到指定的错误界面。