day02 ---统一异常处理(08)

一、什么是统一异常处理

1、制造异常

除0

int a = 10/0;

swagger测试:http://localhost:8001/swagger-ui.html
在这里插入图片描述
2、什么是统一异常处理

我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异常处理

二、统一异常处理

1、创建统一异常处理器

在service-base中创建统一异常处理类GlobalExceptionHandler.java

package com.atguigu.servicebase.handler;
import com.atguigu.commonutils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 统一异常处理类
 */
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public R error(Exception e){
        e.printStackTrace();
        return R.error();
    }
    }

2、测试

返回统一错误结果
swagger测试:http://localhost:8001/swagger-ui.html

在这里插入图片描述

三、处理特定异常

1、添加异常处理方法

GlobalExceptionHandler.java中添加
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public R error(ArithmeticException e){
    e.printStackTrace();
    return R.error().message("执行了自定义异常");
}

2、测试

swagger测试:http://localhost:8001/swagger-ui.html

在这里插入图片描述

四、自定义异常

1、创建自定义异常类GuliException.Java

package com.atguigu.servicebase.handler;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GuliException extends RuntimeException {
    @ApiModelProperty(value = "状态码")
    private Integer code;
    private String msg;
    @Override
    public String toString() {
        return "GuliException{" +
                "message=" + this.getMessage() +
                ", code=" + code +
                '}';
    }
}

2、业务中需要的位置抛出GuliException

在EduTeacherController中的方法添加抛出异常的方法

//查询所有讲师方法
   @ApiOperation(value = "所有讲师列表")
   @GetMapping
   public R list(){
            try {
           int a = 10/0;
       }catch(Exception e) {
           throw new GuliException(20001,"出现自定义异常");
       }
       List<EduTeacher> list = eduTeacherService.list(null);
       return R.ok().data("items", list);
   }

3、添加异常处理方法
GlobalExceptionHandler.java中添加

@ExceptionHandler(GuliException.class)
@ResponseBody
public R error(GuliException e){
    e.printStackTrace();
    return R.error().message(e.getMsg()).code(e.getCode());
}

4、测试
swagger测试:http://localhost:8001/swagger-ui.html
在这里插入图片描述

原文地址:https://www.cnblogs.com/lvwuwa/p/14129584.html