# Java 异常体系设计文档 ## 1. 异常层次设计 ### 1.1 未检查异常 (RuntimeException) - **UrlFormatException**:继承自 RuntimeException,用于处理 URL 格式校验失败 - 包含无效 URL 的信息 - 提供有意义的错误消息 ### 1.2 已检查异常 (Exception) - **NetworkException**:继承自 Exception,用于处理网络相关问题 - 支持链式异常 (cause) - 提供网络操作的上下文信息 ## 2. 异常设计原则 ### 2.1 Checked/Unchecked 选择 - **UrlFormatException (Unchecked)**:因为 URL 格式校验是编程错误,可以通过预检查避免,使用 Unchecked 异常更合理 - **NetworkException (Checked)**:因为网络问题是不可预测的外部因素,使用 Checked 异常强制调用者处理 ### 2.2 异常包装 - 所有异常都保留原始异常信息 (cause) - 使用链式异常避免根因丢失 - 提供构造函数支持 cause 链 ### 2.3 上下文信息 - UrlFormatException 保存无效的 URL - NetworkException 支持传递详细的错误信息 - 异常消息包含足够的上下文帮助调试 ## 3. 重试机制 ### 3.1 指数退避策略 - 基础等待时间:500ms - 计算公式:`wait = base * 2^attempt` - 最大重试次数:5次 - 等待时间示例:500ms, 1000ms, 2000ms, 4000ms, 8000ms ## 4. AI 架构审计请求 > 作为Java架构师,请审查我的异常层次设计:Checked/Unchecked选择是否合理?异常包装是否丢失根因?日志是否包含足够上下文? ## 5. 文件列表 - [UrlFormatException.java](file:///D:\嘻嘻哈哈\Git\java\w11\UrlFormatException.java) - [NetworkException.java](file:///D:\嘻嘻哈哈\Git\java\w11\NetworkException.java) - [RetryUtils.java](file:///D:\嘻嘻哈哈\Git\java\w11\RetryUtils.java) - [UrlValidator.java](file:///D:\嘻嘻哈哈\Git\java\w11\UrlValidator.java) - [ExceptionDemo.java](file:///D:\嘻嘻哈哈\Git\java\w11\ExceptionDemo.java)