在java中定义重复操作异常,需要创建一个继承自`runtimeexception`的自定义类,并在构造函数中调用父类构造方法传入错误信息。这样可以在业务逻辑检测到非法重复操作时抛出该异常,从而中断当前流程并提示开发者。

如何设计异常类的继承结构
直接继承`RuntimeException`即可实现非受检异常,无需强制捕获。这种设计适合用于程序逻辑错误,如用户尝试对同一资源进行重复提交或重复锁定。通过设置不同的构造函数,可以灵活传递消息、原因甚至自定义的错误码。

public class DuplicateOperationException extends RuntimeException {
private final String errorCode;
public DuplicateOperationException(String message) {
super(message);
this.errorCode = "DUP_OP_001";
}
public DuplicateOperationException(String message, Throwable cause) {
super(message, cause);
this.errorCode = "DUP_OP_001";
}
public String getErrorCode() {
return errorCode;
}
}
如何在业务代码中触发该异常
在业务层通过状态判断或锁机制检测重复操作,一旦确认冲突则实例化上述异常并抛出。例如在订单处理中,若发现订单ID已存在且状态未变,则抛出异常阻止后续执行。这种方式能确保数据一致性并快速反馈错误。
立即学习“Java免费学习笔记(深入)”;

public class OrderService {
private Map<String, String> orderStatusMap = new HashMap<>();
public void processOrder(String orderId, String action) {
if (orderStatusMap.containsKey(orderId)) {
throw new DuplicateOperationException(
"Duplicate operation on order: " + orderId
);
}
orderStatusMap.put(orderId, action);
System.out.println("Order processed: " + orderId);
}
public static void main(String[] args) {
OrderService service = new OrderService();
try {
service.processOrder("ORD-001", "CREATE");
service.processOrder("ORD-001", "UPDATE"); // 触发异常
} catch (DuplicateOperationException e) {
System.err.println("Caught: " + e.getMessage());
}
}
}
当异常被捕获后如何获取错误码
在捕获块中可以直接调用`getErrorCode()`方法获取预定义的错误标识,便于前端展示或日志记录。由于该字段在构造时已固定,因此每次抛出的异常都携带一致的错误分类信息,方便统一处理策略。


















