基于spring 的统一异常处理

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

spring 的统一异常处理

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

在标注了 @ControllerAdvice、@RestControllerAdvice 注解的类中,配合使用如下注解能够实现不一样的功能框架

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

对于全局异常处理,具体来讲就是,经过建立 @ControllerAdvice 类,并自定义一个 @ExceptionHandler 方法,来统一处理。.net

实例

这里提供一种常见的设计,供你们参考。设计

主要分为如下几个部分3d

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

自定义全局状态码

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

自定义异常类

每一种异常都对于一种ApplicationEnum blog

自定义业务结果类

自定义业务结果类,来统一全部 controller 层的返回值get

为了方便使用,再建立一个 SuccessResult 和一个 FailResultit

自定义异常处理类

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

参考文章

使用自定义的异常

相关文章
相关标签/搜索