重构MyDate类,定义自定义异常类InvalidDateException,替换①中的Exception类。同时修改Demo类,保证程序能正常运行
时间: 2024-02-16 19:00:36 浏览: 20
重构后的MyDate类代码如下:
```java
public class MyDate {
private int year;
private int month;
private int day;
public MyDate(int year, int month, int day) throws InvalidDateException {
setYear(year);
setMonth(month);
setDay(day);
}
public int getYear() {
return year;
}
public void setYear(int year) throws InvalidDateException {
if (year < 0) {
throw new InvalidDateException("年份不能为负数");
}
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) throws InvalidDateException {
if (month < 1 || month > 12) {
throw new InvalidDateException("月份必须在1-12之间");
}
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) throws InvalidDateException {
if (day < 1 || day > 31) {
throw new InvalidDateException("日期必须在1-31之间");
}
this.day = day;
}
@Override
public String toString() {
return "MyDate{" +
"year=" + year +
", month=" + month +
", day=" + day +
'}';
}
}
```
在上面的代码中,我们定义了一个名为InvalidDateException的自定义异常类,并用它替换了原来的Exception类。我们还在setYear、setMonth和setDay方法中添加了异常抛出,以确保日期的有效性。
Demo类代码如下:
```java
public class Demo {
public static void main(String[] args) {
try {
MyDate date = new MyDate(-2021, 13, 32);
System.out.println(date);
} catch (InvalidDateException e) {
System.out.println(e.getMessage());
}
}
}
```
在上面的代码中,我们使用MyDate类创建了一个无效日期对象,并在try-catch块中捕获了InvalidDateException异常,以确保程序正常运行。如果日期无效,将打印异常信息。