Lombok 官方库中不存在 @StandardException 注解,该注解是常见误解;其设计原则拒绝强制约定“标准异常构造函数”,因各项目对 message、cause、suppression 等参数需求不一,故未内置该功能。

Lombok 并没有 @StandardException 这个注解,这是常见的误解。Lombok 官方库中**不存在该注解**,也不提供专门用于“自动生成自定义异常标准构造函数”的内置注解。
为什么没有 @StandardException?
Lombok 的设计原则是提供通用、安全、无歧义的代码简化能力。异常类的构造函数虽有常见模式(如带 String message、Throwable cause、两者兼有等),但不同项目对“标准”的定义可能不同(是否含 String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace 等)。Lombok 选择不强制约定,而是交由开发者显式控制或组合已有注解实现。
如何用 Lombok 实现类似效果?
你可以通过组合 @AllArgsConstructor、@RequiredArgsConstructor 和 @NoArgsConstructor,配合手动声明字段,来高效生成常用构造函数。推荐做法如下:
-
继承
RuntimeException或Exception:这是自定义异常的基础 -
声明一个
private final String code(可选)和/或private final Object[] args(用于国际化消息):按需添加业务字段 -
用
@AllArgsConstructor生成全参构造器:覆盖message、cause、code等参数 -
用
@RequiredArgsConstructor+@NoArgsConstructor补充常用组合:例如仅message或仅code
示例:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class BusinessException extends RuntimeException {
private String code;
private Object[] args;
// 手动添加最常用的两个构造函数(Lombok 不会自动推导语义)
public BusinessException(String message) {
super(message);
}
public BusinessException(String message, Throwable cause) {
super(message, cause);
}
// 若需支持 cause + code + args,可用 @AllArgsConstructor 生成:
// public BusinessException(String message, Throwable cause, String code, Object[] args)
}
为什么不建议完全依赖 Lombok 自动生成所有异常构造函数?
异常的构造逻辑常涉及语义约束(如 code 必须非空、message 应从 code 和 args 动态生成等)。全自动构造易绕过校验,降低健壮性。更稳妥的方式是:
- 保留 1–2 个语义明确的公有构造函数(如
BusinessException(String code)) - 在构造函数内部完成参数校验和消息组装
- 用
@Getter暴露字段,而非让 Lombok 自动生成 setter 或全参构造
替代方案:用 IDE 模板或静态工厂方法
比注解更清晰可控:
- 在 IntelliJ 中配置 Live Template,输入
exrt→ 自动生成RuntimeException子类骨架 - 提供静态工厂方法,如
BusinessException.of("USER_NOT_FOUND", userId),封装构造逻辑和默认行为
这样既保持可读性,又避免注解带来的隐式行为风险。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










