GlobalExeptionHandler全局异常处理器核心知识点
1.RestControllerAdvice全局REST接口统一增强处理器只拦截标有RestController的控制器抛出的异常。等等价于ControllerAdvice ResponseBody返回值自动序列化为JSON不用每个方法加ResonseBody。默认扫描当前包及子包所有Controller可通过basePackages指定扫描包。全局异常拦截的入口注解。2.ExceptionHandler(异常类.class)声明当前方法专门捕获指定类型异常。精准匹配优先子类异常方法会优先于父类执行。例BusinessException 会先走自定义业务异常方法不会走到RuntimeException/Exception兜底一个类可多个该注解方法分别处理不同异常。3.ResponseStatus(HttpStatus.状态码)修改HTTP响应状态码和业务返回码分离。常用状态码400 BAD_REQUEST参数错误、缺失参数、校验失败401 UNAUTHORIZED未登录、Token 失效403 FORBIDDEN登录但无权限 / 无角色500 INTERNAL_SERVER_ERROR系统未知异常、运行时异常4.Slf4jlombok注解自动注入log对象用于日志打印区分日志级别log.warn():业务可控异常参数错、未登录、权限不足、不打印完整堆栈log.error(消息, e):系统未知异常打印完整异常堆栈方便线上排查5.自定义业务异常 BusinessException业务代码手动throw new BusinessException(码 提示)业务规则不通过数据不存在、库存不足、订单已关闭、操作他人数据。读取自定义错误码 自定义消息返回前端友好业务提示仅打印warn日志6.Sa-Token鉴权异常框架自动抛出的权限异常无需手动编码判断适配项目鉴权体系NotLoginException401未登录、Token过期、Token非法、对应身份认证失败前端统一跳转登录页。NotPermissionException / NotRoleException(403):身份合法但权限/角色不匹配属于访问越权统一返回无权限提示。7.统一处理前端参数不合法导致的异常归属于客户端请求错误后端无需修复代码MethodArgumentNotValidException适配RequestBody JSON参数检验由Valid注解触发。后台全量打印错误日志便于排查前端仅返回第一条提示兼顾排查效率与交互体验。MissingServletRequestParameterException适配RequestParam必填参数缺失场景精准提示缺失参数名称。IllegalArgumentException开发者手动校验参数后主动抛出用于处理参数范围、格式、枚举非法等自定义参数校验场景。8.RuntimeException运行时异常兜底(500)捕获所有非受检运行时异常均为后端代码BUG或系统异常空指针、数组越界、数据库异常、第三方接口调用异常等。打印完整堆栈日志方柏霓开发者定位BUG;对前端屏蔽底层报错细节仅返回通用系统提示防止服务器信息泄露保障系统安全。9.Exception全局最后的兜底顶层父类异常作为项目最后一道异常防护屏障。捕获所有前述处理器为匹配的受检异常、未知框架、罕见系统异常。杜绝接口裸报错、杜绝非预期异常导致的服务响应异常保证项目所有接口100%返回标准化JSON结构保证前端系统稳定性。