• 全局异常处理器


    系统抛出一个不可预知的异常,也需要给出相应的提示信息

    这里分为程序员主动抛出的异常

    package com.heima.common.exception;
    
    import com.heima.model.common.enums.AppHttpCodeEnum;
    
    public class CustomException extends RuntimeException {
    
        private AppHttpCodeEnum appHttpCodeEnum;
    
        public CustomException(AppHttpCodeEnum appHttpCodeEnum){
            this.appHttpCodeEnum = appHttpCodeEnum;
        }
    
        public AppHttpCodeEnum getAppHttpCodeEnum() {
            return appHttpCodeEnum;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    和程序不可预知的异常

    package com.heima.common.exception;
    
    
    import com.heima.model.common.dtos.ResponseResult;
    import com.heima.model.common.enums.AppHttpCodeEnum;
    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;
    
    @ControllerAdvice  //控制器增强类
    @Slf4j
    public class ExceptionCatch {
    
        /**
         * 处理不可控异常
         * @param e
         * @return
         */
        @ExceptionHandler(Exception.class)
        @ResponseBody
        public ResponseResult exception(Exception e){
            e.printStackTrace();
            log.error("catch exception:{}",e.getMessage());
    
            return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR);
        }
    
        /**
         * 处理可控异常  自定义异常
         * @param e
         * @return
         */
        @ExceptionHandler(CustomException.class)
        @ResponseBody
        public ResponseResult exception(CustomException e){
            log.error("catch exception:{}",e);
            return ResponseResult.errorResult(e.getAppHttpCodeEnum());
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    程序员主动抛出的异常可以使用枚举类来定义响应的提示信息

    package com.heima.model.common.enums;
    
    public enum AppHttpCodeEnum {
    
        // 成功段固定为200
        SUCCESS(200,"操作成功"),
        // 登录段1~50
        NEED_LOGIN(1,"需要登录后操作"),
        LOGIN_PASSWORD_ERROR(2,"密码错误"),
        // TOKEN50~100
        TOKEN_INVALID(50,"无效的TOKEN"),
        TOKEN_EXPIRE(51,"TOKEN已过期"),
        TOKEN_REQUIRE(52,"TOKEN是必须的"),
        // SIGN验签 100~120
        SIGN_INVALID(100,"无效的SIGN"),
        SIG_TIMEOUT(101,"SIGN已过期"),
        // 参数错误 500~1000
        PARAM_REQUIRE(500,"缺少参数"),
        PARAM_INVALID(501,"无效参数"),
        PARAM_IMAGE_FORMAT_ERROR(502,"图片格式有误"),
        SERVER_ERROR(503,"服务器内部错误"),
        // 数据错误 1000~2000
        DATA_EXIST(1000,"数据已经存在"),
        AP_USER_DATA_NOT_EXIST(1001,"ApUser数据不存在"),
        DATA_NOT_EXIST(1002,"数据不存在"),
        // 数据错误 3000~3500
        NO_OPERATOR_AUTH(3000,"无权限操作"),
        NEED_ADMIND(3001,"需要管理员权限");
    
        int code;
        String errorMessage;
    
        AppHttpCodeEnum(int code, String errorMessage){
            this.code = code;
            this.errorMessage = errorMessage;
        }
    
        public int getCode() {
            return code;
        }
    
        public String getErrorMessage() {
            return errorMessage;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    而不可预知的异常也需要给出返回响应信息

    这里有两个注解:
    @ControllerAdvice:定义一个切面来拦截需要拦截的异常
    @ExceptionHandler(Exception.class):定义异常类

  • 相关阅读:
    python利用字典归类列表
    Linux学习第35天:Linux LCD 驱动实验(二):星星之火可以燎原
    【Linux】--make/makefile--gcc/g++/gdb
    138. SAP UI5 控件库里 Form 控件和 SimpleForm 控件的区别和联系讲解
    计算机操作系统 第五章 虚拟存储器(2)
    java项目开发实例SSM框架实现的车位租赁管理系统|停车场计费系统
    元宇宙014 | 世界人工智能大会之元宇宙论坛:终端篇
    MySQL学习(4):SQL语句之数据操作语言:DML
    ADS微带单枝短截线匹配电路的仿真
    FPGA 按键控制串口发送
  • 原文地址:https://blog.csdn.net/weixin_44141172/article/details/133882514