在实验三中曾经实现过日期类MyDate,它包含一个含参数的构造方法MyDate(intyear,intmonth,intday)、以及三个相应的设置方法setXXX(intarg)。1.现编写一个自定义的异常InvalidDateException。当构造方法或设置方法接受的参数不符合实际要求时,抛出一个这个异常的实例。2.在main方法中分别包含以下代码,捕获并打印异常信息:MyDated1=newMyDate(-1,13,32);MyDated2=newMyDate();d2.setDay(100);详细写出相应步骤含义
时间: 2023-06-26 21:08:21 浏览: 49
1. 首先,我们需要定义一个自定义异常类InvalidDateException,如下所示:
```java
public class InvalidDateException extends Exception {
public InvalidDateException(String message) {
super(message);
}
}
```
这个异常类继承自Exception类,表示它是一个检查异常。在构造方法中传入一个字符串message,表示异常的详细信息。
2. 接下来,我们需要在MyDate类的构造方法和设置方法中抛出InvalidDateException异常。例如,构造方法代码如下所示:
```java
public MyDate(int year, int month, int day) throws InvalidDateException {
if (!isValidDate(year, month, day)) {
throw new InvalidDateException("Invalid date!");
}
this.year = year;
this.month = month;
this.day = day;
}
```
在构造方法中,我们首先调用一个isValidDate()方法来判断参数是否合法,如果不合法,就抛出一个InvalidDateException异常。如果参数合法,就将它们赋值给类的成员变量。
类似地,我们也可以在setXXX()方法中抛出InvalidDateException异常。
3. 最后,在main方法中,我们可以分别创建MyDate对象,并尝试传入不合法的参数或调用setXXX()方法设置不合法参数。代码如下所示:
```java
public static void main(String[] args) {
try {
MyDate d1 = new MyDate(-1, 13, 32);
} catch (InvalidDateException e) {
System.out.println(e.getMessage());
}
try {
MyDate d2 = new MyDate();
d2.setDay(100);
} catch (InvalidDateException e) {
System.out.println(e.getMessage());
}
}
```
在这段代码中,我们分别创建了两个MyDate对象d1和d2,并尝试传入不合法的参数或调用setXXX()方法设置不合法参数。由于这些操作会抛出InvalidDateException异常,我们使用try-catch语句来捕获异常并打印异常信息。