# Java 异常处理与可靠性检查清单

## 异常语义

- `catch (Exception)` 或 `catch (Throwable)` 是否吞掉关键错误或未重新抛出合适类型。
- 业务异常与系统异常是否混淆，导致调用方无法区分可重试与不可重试失败。
- 是否在不该抛出 checked exception 的层向上泄漏实现细节。

## 错误传播与包装

- 链式 cause 是否在包装时保留（`initCause` / 构造传入 cause），避免丢失根因栈。
- 是否在日志中重复记录同一异常（同一请求路径多层 `log.error`）。

## 超时与重试

- 对外部调用（HTTP、消息、DB）是否在 diff 中呈现无限等待或缺失超时配置。
- 重试是否缺少退避或幂等前提，可能导致重复副作用（仅当 diff 能支撑该结论时指出）。

## 日志与敏感数据

- 是否在异常或日志中输出 token、密码、完整 PII；堆栈是否在生产配置下泄露内部路径。

## Optional 与 null

- 是否对可能为 null 的返回值在未校验下解引用；`Optional` 是否用作字段或方法参数反模式（仅当明显时指出）。
