阅读 251

基于spring 的统一异常处理

将业务执行过程中会产生的各种异常,对其进行统一处理是所有web项目的通用需求,spring 作为最流行的web框架,自然是提供了解决方案。

spring 的统一异常处理

在Spring 3.2中,新增了@ControllerAdvice、@RestControllerAdvice 注解来增强我们 controller 层的。

在标注了 @ControllerAdvice、@RestControllerAdvice 注解的类中,配合使用以下注解可以实现不同的功能

  • @ExceptionHandler : 全局异常处理
  • @InitBinder : 全局数据绑定
  • @ModelAttribute : 全局数据预处理

对于全局异常处理,具体来说就是,通过创建 @ControllerAdvice 类,并自定义一个 @ExceptionHandler 方法,来统一处理。

实例

这里提供一种常见的设计,供大家参考。

主要分为以下几个部分

  • 自定义全局状态码
  • 自定义异常类
  • 自定义业务结果类
  • 自定义统一异常处理类
  • 使用自定义的异常

自定义全局状态码

每一个业务状态都对于一个状态码

自定义异常类

每一种异常都对于一种ApplicationEnum

自定义业务结果类

自定义业务结果类,来统一所有 controller 层的返回值

为了方便使用,再创建一个 SuccessResult 和一个 FailResult

自定义异常处理类

如果一个异常能匹配多个 @ExceptionHandler 时,选择匹配深度最小的Exception(即最匹配的Exception)

参考文章

使用自定义的异常

关注下面的标签,发现更多相似文章
评论