1.上目录结构

SpringBoot 中配置异常处理_自定义异常

  1. GlobalExceptionHandler .java 类 中 以下内容
package com.school.service_base.exceptionhandler;


import com.school.commonutils.R;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @User: Json
 * @Date: 2021/11/23
 **/
@ControllerAdvice
public class GlobalExceptionHandler {

    //指定出现什么异常执行这个方法
    // 1.1 全局异常处理
    @ExceptionHandler(Exception.class)
    @ResponseBody  //为了返回数据
    public R error(Exception e){
        e.printStackTrace();
        return R.error().message("请稍后重试噢~");
    }

    // 1.2 特定异常处理 实际开发中用的不多
    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody  //为了返回数据
    public R error(ArithmeticException e){
        e.printStackTrace();
        return R.error().message("特定异常处理ArithmeticException~");
    }
    // 1.3 自定义异常处理
    // 1) 创建一个自定义异常类继承RuntimeException   写异常属性
    // 2)再这个全局异常类中 添加以下方法
    //注:自定义异常 不会自动抛出异常 需要手动抛出
    @ExceptionHandler(schoolException.class)
    @ResponseBody  //为了返回数据
    public R error(schoolException e){
        e.printStackTrace();
        return R.error().code(e.getCode()).message(e.getMsg());
    }

    // 1 统一 异常处理
    // 1.1 全局异常处理
    // 1.2 特定异常处理
    // 1.3 自定义异常处理

    // 2. 统一日志处理
    // Logback 使用
}

3.自定义异常类

schoolException.java

package com.school.service_base.exceptionhandler;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @User: Json
 * @Date: 2021/11/28
 * 自定义异常类
 **/
@Data     //自动生成 get set方法
@AllArgsConstructor  //自动生成 有参数的构造方法
@NoArgsConstructor   //自动生成 无参数构造方法
public class schoolException extends RuntimeException{

    private  Integer code;  //状态码

    private String msg;  //异常信息
}
  1. 测试

SpringBoot 中配置异常处理_自定义异常_02