• 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
    在这里插入图片描述

  • 相关阅读:
    Shell中调用java时的参数
    简析echo命令在Linux系统中的使用
    设置Linux环境变量的三种方法
    nohup 后台运行,以及重定向标准输出和标准错误 &/dev/null 文件
    &命令
    linux下卸载gij的java
    在Linux下运行可执行Jar包
    jar参数运行应用时classpath的设置方法
    shell获取当前进程pid和上一个进程pid
    检查文件,如果文件不存在则创建
  • 原文地址:https://www.cnblogs.com/lvwuwa/p/14129584.html
Copyright © 2020-2023  润新知