exception目录异常处理类说明.md 2.1 KB

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