# 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 响应格式 - 使用日志记录各种异常信息,便于问题排查