Spring MVC 05:异常处理
当我们实际开发过程中,进行项目部署以后,往往会出现各种各样的异常,如果当客户访问以后,手贱触发了某些异常,如果就直接把这种界面扔给客户的话,客户可是会疯掉的。。。

接下来我们就定一个属于自己的异常类和针对这个异常类的处理类以及对应的配置信息。
自定义异常类
自定义一个异常类MyException.java
public class MyException extends Exception{
private String message;
public MyException() {
}
public MyException(String message) {
this.message = message;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
接下来写一个必会出错的方法进行测试
@RequestMapping("/test5")
public String test5() throws Exception {
System.out.println("test5()");
try {
int i = 1 / 0;
} catch (Exception e) {
e.printStackTrace();
throw MyException("test5 error!");
}
return "jsp1";
}
自定义异常处理类(ExceptionResolver)
为了能让dispatch拦截到Exception,我们要定义一个异常处理类。
public class MyExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
// 分辨exception类型
MyException ex = null;
if (e instanceof MyException){
ex = (MyException) e;
}else{
ex = new MyException("test5 error!");
}
ModelAndView mv = new ModelAndView();
mv.addObject("errorMsg",ex.getMessage());
mv.setViewName("error");
return mv;
}
}
然后自己写一个出现异常时应该跳转的页面,这里是error.jsp
配置SpringMVC.xml,添加映射关系
<bean id="myExceptionResolver" class="cn.silverCorridors.MyExceptionResolver"></bean>
这样就可以了
