封装全局异常处理(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(),""); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤