zoukankan      html  css  js  c++  java
  • 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
    在这里插入图片描述

  • 相关阅读:
    班别:批量添加导师
    批量删除注入字段,触发器防止注入。
    c#生成不重复随机数
    网络蜘蛛爬虫程序
    session丢失问题整理
    asp.net 自动生成控件
    C#实现所有经典排序算法 收藏
    泛型学习
    Android 判断网络并打开设置界面
    Android 获取Android手机中SD卡存储信息 获取剩余空间
  • 原文地址:https://www.cnblogs.com/lvwuwa/p/14129584.html
Copyright © 2011-2022 走看看