自定义一个异常类并继承RuntimeException并且使用日期格式化类获得当前时间 若当前时间晚于截止打卡时间,抛出自定义异常
时间: 2024-12-22 22:26:39 浏览: 6
自定义异常类通常是为了提供特定业务场景下的错误处理,使得程序结构更清晰、易于理解和调试。在这个例子中,你可以创建一个新的异常类,让它继承自`java.lang.RuntimeException`或者其直接子类,比如`java.util.concurrent.TimeoutException`,如果更贴近下班打卡的概念,可以考虑自定义一个名为`Late打卡Exception`或类似名称的异常。
首先,定义异常类:
```java
public class LateCheckInException extends RuntimeException {
private final LocalDateTime currentTime;
public LateCheckInException(LocalDateTime currentTime) {
super("当前时间已超过截止打卡时间");
this.currentTime = currentTime;
}
// 可选:添加获取当前时间的方法,用于日志记录等
public LocalDateTime getCurrentTime() {
return currentTime;
}
}
```
然后,在适当的时候检查当前时间是否晚于截止打卡时间,并根据需要抛出这个异常。假设有一个`getDeadline()`方法返回截止打卡时间:
```java
LocalDateTime deadline = getDeadline(); // 获取截止打卡时间
LocalDateTime now = LocalDateTime.now(); // 获得当前时间
if (now.isAfter(deadline)) {
throw new LateCheckInException(now);
}
```
当条件满足时,会抛出`LateCheckInException`,并在代码执行过程中被捕获或处理。例如,可以添加异常处理器捕获这个异常:
```java
try {
// 上述检查代码...
} catch (LateCheckInException e) {
log.error("打卡超时", e);
// 处理超时操作,如发送通知或者不做处理
}
```
阅读全文