1.使用@ExceptionHandler注解配合 @ControllerAdvice注解使用实现异常处理
2.实现HandlerExceptionResolver接口来管理异常
3.使用@Around注解抓取JoinPoint(切面)的proceed()方法来环绕管理方法抛出的异常
说一下第一点和第二点的区别,为啥很多文章都推荐第一种方式,是因为第一种方案可以使用@ResponseBody注解方法对特定异常进行处理),而使用HandlerExceptionResolver的话如果是ajax的请求,出现异常就会很尴尬,ajax并不认识ModelAndView,结论就是第二种方案只适合ModelAndView或者重定向,不支持返回json,这块在最后的列子中有说明,HandlerExceptionResolver接口中resolveException方法返回体是ModelAndView。