Spring MVC 统一异常处理总结
2017-02-15 16:10
465 查看
摘要: 原创出处 http://peijie2016.oschina.io 欢迎转载,保留摘要,谢谢!
在一个Spring MVC项目中,使用统一异常处理,可以使维护代码变得容易。下面总结一下常用的3种方法。
实现
实现
继承
继承
所以,我们继承之后也是重写
使用注解
推荐使用这种方法,比较直观。下面上代码:
首先是自定义异常类
然后是全局异常统一处理类:
添加
在这个类中,我们可以对每一种异常编写一种处理逻辑,在方法上使用
如果是RESTful风格,不返回视图,也可使用
在一个Spring MVC项目中,使用统一异常处理,可以使维护代码变得容易。下面总结一下常用的3种方法。
实现HandlerExceptionResolver
接口
实现HandlerExceptionResolver接口,实现
resolveException()方法,根据传入的异常类型做出处理。
继承AbstractHandlerExceptionResolver
类
继承AbstractHandlerExceptionResolver类,和第一种方式类似,因为
AbstractHandlerExceptionResolver实现了
HandlerExceptionResolver接口。
所以,我们继承之后也是重写
resolveException()方法,再处理各种异常。
使用注解@ControllerAdvice
处理
推荐使用这种方法,比较直观。下面上代码:首先是自定义异常类
public class ResourceDoesNotExistException extends RuntimeException { private static final long serialVersionUID = 7833283455112352655L; public ResourceDoesNotExistException() { super(); } public ResourceDoesNotExistException(String message) { super(message); } public ResourceDoesNotExistException(String message, Throwable cause) { super(message, cause); } public ResourceDoesNotExistException(Throwable cause) { super(cause); } protected ResourceDoesNotExistException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } }
然后是全局异常统一处理类:
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(value = OtherException.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception ex) { // 其他异常处理逻辑... } @ExceptionHandler(value = ResourceDoesNotExistException.class) public ModelAndView notFoundErrorHandler(HttpServletRequest req, ResourceDoesNotExistException ex) { ModelAndView mav = new ModelAndView(); mav.setViewName("404"); return mav; } }
添加
@ControllerAdvice注解的类是集中处理异常的地方,可以同时存在多个这样的类,用来做更细粒度的划分。
在这个类中,我们可以对每一种异常编写一种处理逻辑,在方法上使用
@ExceptionHandler注解修饰,传入指定的异常类型即可。
如果是RESTful风格,不返回视图,也可使用
@RestControllerAdvice。
相关文章推荐
- spring mvc 异常(runtime异常、ajax异常)统一处理与范例
- spring mvc异常统一处理(ControllerAdvice注解)
- 使用Spring MVC统一异常处理实战
- Spring MVC统一异常处理:HandlerExceptionResolver
- Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志
- spring mvc 异常统一处理方式
- Spring Boot系列十 Spring MVC全局异常处理总结
- spring mvc异常统一处理(ControllerAdvice注解)
- 使用Spring MVC统一异常处理实战
- spring mvc 异常统一处理方式
- Spring MVC的Controller统一异常处理:HandlerExceptionResolver
- Spring MVC异常统一处理(包括普通请求异常以及ajax请求异常)
- 使用Spring MVC统一异常处理实战
- java学习笔记7 - Spring mvc 统一异常处理和静态文件的配置
- 使用Spring MVC统一异常处理实战
- spring mvc 异常统一处理
- spring mvc异常统一处理(ControllerAdvice注解)
- 使用Spring MVC统一异常处理
- 【转】Spring mvc 统一异常处理和静态文件的配置
- Spring MVC的Controller统一异常处理:HandlerExceptionResolver