1 @ExceptionHandler({ArithmeticException.class, NullPointerException.class}) 2 public String exception(Exception e) { 3 System.out.println(e);
4 ModelAndView mv = new ModelAndView("error");
5 mv.addObject("error", e);
6 return mv; 7 return "error"; 8 }
该注解作用对象为方法,并且在运行时有效;
该注解标识的方法不能有其他参数,所以前端想要获取异常信息,需要利用ModelAndView;
异常处理路径:最短路径优先。--- 如果有多个处理方法,根据异常的最近继承关系找到继承深度最浅的那个@ExceptionHandler注解方法
1 @ControllerAdvice 2 public class exceptionHandler { 3 4 @ExceptionHandler(ArrayIndexOutOfBoundsException.class) 5 public ModelAndView arrayIndexOutOfBoundsException(ArrayIndexOutOfBoundsException e) { 6 System.out.println(e); 7 ModelAndView mv = new ModelAndView("error"); 8 mv.addObject("error", e); 9 return mv; 10 } 11 }
不要忘记spring配置文件配置<mvc:annotation-driven></mvc:annotation-driven>
b.ResponseStatusExceptionResolver ----自定义异常显示页面,类似404
@ResponseStatus(value=HttpStatus.xxx,reason="自己定义")
SimpleMappingExceptionResolver --- 通过配置文件捕获异常(看教程的代码,我没有实现)
1 <!-- 通过SimpleMappingExceptionResolver 捕获异常 --> 2 <bean class="org.springframework.web.portlet.handler.SimpleMappingExceptionResolver"> 3 <property name="exceptionMappings"> 4 <props> 5 <prop key="java.lang.ArrayIndexOutOfBoundsException"> 6 <!-- 跳转到error.jsp页面 --> 7 error 8 </prop> 9 </props> 10 </property> 11 </bean>
原文:https://www.cnblogs.com/Johnny-yu/p/11275675.html