SpringMVC异常映射机制
SpringMVC给我们提供了基于XML和基于注解两种异常映射机制。这两种异常映射不能够只使用一个,需要将它们结合起来一起使用。之所以这样,是因为有些异常是基于注解异常映射捕获不到的。
在SpringMVC中,如果是用<mvc:view-controller path=“请求地址” view-name=“视图名”/>进行请求的处理,那么在这过程中抛出的异常,就得用基于xml的异常映射来捕获处理这个异常。如果一个请求是由@RequestMapping注解来处理的,那么在这过程中抛出的异常,就得使用基于注解的异常映射来捕获并处理这个异常。
1.基于XML的异常映射
2.基于注解的异常映射
2.1首先要创建一个异常处理类
@ControllerAdvice
public class XxxExceptionResolver {
}
- @ControllerAdvice
- 表示当前类是一个基于注解的异常处理器类
2.2在这个类里面编写异常的映射以及处理
@ExceptionHandler(value = {异常类型.class..})
public ModelAndView(不一定要是这个类型的) resolveXxxException (
// 异常处理后要去的地方
String viewName,
// 异常类型
Exception exception,
// 当前请求对象
HttpServletRequest request,
// 当前响应对象
HttpServletResponse response) {
...
...
ModelAndView modelAndView = new ModelAndView();
// 9.将Exception对象存入模型
modelAndView.addObject(CrowdConstant.ATTR_NAME_EXCEPTION,exception);
// 10.设置对应的视图名称
modelAndView.setViewName(viewName);
// 11.返回ModelAndView对象
return modelAndView;
}
/**
* @ExceptionHandler 将一个或多个具体的异常类型和一个方法关联起来
*
**/
- @ExceptionHandler 将一个或多个具体的异常类型和一个方法关联起来