Live2D

封装全局异常处理(Java)

封装全局异常处理

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(),"");
    }
}
复制代码

 

posted @   都是朕的江山  阅读(561)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
返回顶端
点击右上角即可分享
微信分享提示