首页 > 编程语言 >封装全局异常处理(Java)

封装全局异常处理(Java)

时间:2022-10-03 11:23:08浏览次数:47  
标签:BusinessException code 封装 description errorCode Java 全局 异常 public

封装全局异常处理

1.定义业务异常类

作用:

1.相对于java的异常类,支持更多字段

2.自定义构造函数,更灵活/快捷的设置字段

 

/**
 * 自定义异常类
 * @author LL
 */
public class BusinessException extends RuntimeException{
    private final int code;
    private final String description;
​
    public BusinessException(String message, int code, String description) {
        super(message);
        this.code = code;
        this.description = description;
    }
​
    public BusinessException(ErrorCode errorCode) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
        this.description = errorCode.getDescription();
    }
​
    public BusinessException(ErrorCode errorCode, String description) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
        this.description = description;
    }
​
    public int getCode() {
        return code;
    }
​
    public String getDescription() {
        return description;
    }
}

 

遇到错误不再return,直接抛出异常

//1.校验
        if(StringUtils.isAnyBlank(userAccount,userPassword,checkPassword,planetCode)){
            throw new BusinessException(ErrorCode.PARAMS_ERROR,"参数为空");
        }
        if (userAccount.length()<4){
            throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户账户过短");
        }
        if (userPassword.length()<8||checkPassword.length()<8){
            throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户密码过短");
        }
        if (planetCode.length()>5){
            throw new BusinessException(ErrorCode.PARAMS_ERROR,"编号过长");
        }

 

 

2.编写全局异常处理器

作用:

1.捕获代码中所有的异常,内容消化,让前端得到更详细的业务报错/信息

2.同时屏蔽掉项目框架本身的异常(不暴露服务器内部状态)

3.集中处理,比如记录日志

 
/**
 * 全局异常处理器
 */
//SpringAOP注解:在调用方法前后进行额外的处理
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    @ExceptionHandler(BusinessException.class)
    public BaseResponse businessException(BusinessException e){
        log.error("businessException:"+e.getDescription(),e.getDescription());
        return ResultUtils.error(e.getCode(),e.getMessage(),e.getDescription());
    }
​
    @ExceptionHandler(RuntimeException.class)
    public BaseResponse runtimeException(RuntimeException e){
        log.error("runtimeException",e);
        return ResultUtils.error(ErrorCode.SYSTEM_ERROR,e.getMessage(),"");
    }
}

 

标签:BusinessException,code,封装,description,errorCode,Java,全局,异常,public
From: https://www.cnblogs.com/galo/p/16750185.html

相关文章