定义全局异常和全局异常处理器

简介: 定义全局异常和全局异常处理器

公众号merlinsea


  • springboot中可以定义全局异常处理,即在项目中如何一个位置爆出异常,都会自动调用这个全家异常处理器进行处理。

  • 定义业务异常类
  • 业务异常类的信息主要包含业务状态码和额外信息


/**
 * 定义全局异常
 */
@Data
public class BizException extends RuntimeException{
    private Integer code;
    private String msg;
    public BizException(Integer code, String message) {
        super(message);
        this.code = code;
        this.msg = message;
    }
    // BizCodeEnum 业务状态码的枚举
    public BizException(BizCodeEnum bizCodeEnum) {
        super(bizCodeEnum.getMsg());
        this.code = bizCodeEnum.getCode();
        this.msg = bizCodeEnum.getMsg();
    }
}


  • 定义异常处理器
  • @ControllerAdvice 用于标识异常处理类
  • @ExceptionHandler(value = Exception.class)用于标识异常处理类中的方法处理类型异常。 这个注解可以作用在类上也可以作用在方法上,
/**
 * 自定义全局异常处理器
 * @ControllerAdvice 标识这个类是个异常处理类,当产生异常的时候,会更佳异常总类找对应的方法执行
 * @ExceptionHandler(value = Exception.class)当子模块发生Exception的异常或者其子异常就会调用handle方法
 * @ResponseBody 返回json数据
 */
@ControllerAdvice
@Slf4j
public class CunstomExceptionHandle {
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public JsonData handle(Exception e){
        if(e instanceof BizException){
            BizException bizException = (BizException) e;
            log.info("[业务异常:{}]",e.getMessage());
            return JsonData.buildCodeAndMsg(bizException.getCode(),bizException.getMsg());
        }else{
            log.info("[非业务异常:{}]",e.getMessage());
            return JsonData.buildError("全局异常,未知错误");
        }
    }
}


相关文章
|
4月前
|
运维 Devops
全局异常处理
全局异常处理
36 0
|
7月前
|
程序员
项目中的全局异常是如何处理的
项目中的全局异常处理通常包括对预期异常(程序员手动抛出)和运行时异常的管理。项目已提供`BaseException`作为基础异常类,用于手动抛出异常,并通过`GlobalExceptionHandler`进行全局处理。`
63 4
|
运维 Prometheus 监控
java异常 | 处理规范、全局异常、Error处理
java异常 | 处理规范、全局异常、Error处理
|
7月前
|
Java
SpringBoot全局异常@RestControllerAdvice全局异常
SpringBoot全局异常@RestControllerAdvice全局异常
38 0
全局统一异常处理
全局统一异常处理
66 0
|
Java 开发者
全局异常处理器|学习笔记
快速学习全局异常处理器
196 0
全局异常处理器|学习笔记
|
小程序
零基础学小程序 —— 全局配置(四)
零基础学小程序 —— 全局配置(四)
208 0
零基础学小程序 —— 全局配置(四)
|
JSON 前端开发 数据格式
RestControllerAdvice注解与全局异常处理
从该注解的名字可以看到,这是一个与切面有关的注解,事实上也是如此,我们都知道切面的注解肯定都有个作用范围,切面类的注解只能对其作用范围内的操作,实现切面操作。那RestCntrollerAdvice的作用范围是什么呢?
452 0