简单,清晰,够用,异常类型与视图的映射,自定义的任何异常类型都可以在这里和错误页面进行映射,颗粒度够细
springmvc.xml
<bean id="webExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="defaultErrorView" value="redirect:/error.jsp?flag=defaultErrorView" /> <property name="exceptionMappings"> <props> <prop key="com.a.a.a.exception.BaseServiceException"> redirect:/error.jsp?flag=BaseServiceException </prop> <prop key="java.lang.RuntimeException"> redirect:/error.jsp?flag=RuntimeException </prop> </props> </property> </bean>
AnnotationMethodHandlerExceptionResolver
Spring 3新增的注解是异常处理,在Control类中加入
@RequestMapping("exception") public void throwException() { throw new RuntimeException("This is the runtime exception"); } @ExceptionHandler(Exception.class) public @ResponseBody String handleException(Exception ex) { return ex.getMessage(); }
也可以将@ExceptionHandle抽象到BaseControl里,不过若用了SimpleMappingExceptionResolver,则@ExceptionHandle会不起作用
HandlerExceptionResolver
自定义异常实现
public class WebExceptionResolver implements HandlerExceptionResolver { public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object object, Exception e) { HttpSession session = request.getSession(); session.getId(); //处理异常 return null; } }
springmvc.xml
<bean id="webExceptionResolver" class="com.a.a.WebExceptionResolver"/>