exception 目录异常处理类说明
在 src/main/java/work/baiyun/chronicdiseaseapp/exception 目录下包含了项目中的自定义异常类和全局异常处理器,用于统一处理系统中发生的各种异常。
CustomException.java
用途
CustomException 是自定义的运行时业务异常类,用于封装业务逻辑中出现的异常情况,交由全局异常处理器进行统一处理。
实现细节
- 继承自 RuntimeException,是一个非受检异常
- 包含一个 int 类型的 code 字段,用于表示异常的错误码
- 提供两个构造方法:
- CustomException(String message):仅传入异常信息,错误码默认为 -1
- CustomException(int code, String message):传入错误码和异常信息
- 提供 getCode() 方法获取错误码
CustomExceptionHandler.java
用途
CustomExceptionHandler 是全局异常处理器,使用 @RestControllerAdvice 注解,用于统一拦截和处理系统中发生的各种异常,并返回统一格式的错误响应。
实现细节
- 使用 @RestControllerAdvice 注解,对所有控制器中的异常进行统一处理
- 处理多种类型的异常:
- BindException:参数绑定异常,通常由 @Valid 验证失败引起
- ConstraintViolationException:约束违反异常,处理参数验证错误
- IllegalArgumentException:非法参数异常
- IllegalStateException:非法状态异常
- CustomException:自定义业务异常
- Exception:其他未处理的异常
- 对不同类型的异常进行不同的处理:
- BindException:提取所有错误信息并拼接成字符串返回
- ConstraintViolationException:提取所有约束违反信息并拼接成字符串返回
- IllegalArgumentException:记录警告日志并返回参数错误信息
- IllegalStateException:记录错误日志并返回系统错误信息
- CustomException:根据异常中的错误码和信息返回相应错误响应
- Exception:记录错误日志并返回系统错误信息
- 所有异常处理方法都返回统一的 R 响应格式
- 使用日志记录各种异常信息,便于问题排查