编写Date的异常处理,要重点解决以下几种异常(注意区分不同的异常类型,要求显示具体的异常): 输入不符合要求的数据类型 输入的序号不正确 日期输入不合法(年<0或月、日不合规则,注意闰年) 日期列表已到最大值,仍然再次录入 日期列表为空,运行修改
时间: 2023-06-17 10:04:28 浏览: 36
以下是针对Date类的异常处理代码:
```java
public class Date {
private int year;
private int month;
private int day;
public Date(int year, int month, int day) throws IllegalArgumentException {
if (year < 0) {
throw new IllegalArgumentException("Invalid year: " + year);
}
if (month < 1 || month > 12) {
throw new IllegalArgumentException("Invalid month: " + month);
}
if (day < 1 || day > getDaysInMonth(year, month)) {
throw new IllegalArgumentException("Invalid day: " + day);
}
this.year = year;
this.month = month;
this.day = day;
}
private int getDaysInMonth(int year, int month) {
if (month == 2) {
if (isLeapYear(year)) {
return 29;
} else {
return 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
private boolean isLeapYear(int year) {
if (year % 4 != 0) {
return false;
} else if (year % 100 != 0) {
return true;
} else if (year % 400 != 0) {
return false;
} else {
return true;
}
}
// 省略其他方法
}
```
1. `IllegalArgumentException`:当年份小于0、月份不在1-12之间或日期不合法时,抛出该异常。
2. `ArrayIndexOutOfBoundsException`:当输入的序号不在日期列表的范围内时,抛出该异常。
3. `IllegalArgumentException`:当输入的年份小于0或月、日不合规则(如2月份不是闰年的29天),抛出该异常。
4. `ArrayIndexOutOfBoundsException`:当日期列表已到最大值,但用户仍然想要添加日期时,抛出该异常。
5. `NullPointerException`:当日期列表为空,但用户想要修改日期时,抛出该异常。