Ниже приведен код, который должен вызывать исключение IllegalArgumentException, если заданное значение вне диапазона. Но вместо этого, если заданные числа в setTime() вне диапазона, он вернет соответствующее значение, когда объект был создан в основном методе вместо желаемого сообщения об ошибке! что является причинойIllegalArgumentException возвращает значение, указанное в объявлении объекта
вот код:
public class MyTime {
private int hour = 0;
private int minute = 0;
private int second = 0;
public static void main (String [] args) {
// when the value is out of range in setTime(), the value given bellow in t1 is returned
MyTime t1 = new MyTime (10,10,10);
t1.setTime(26, 23, 14);
System.out.println("toString(): " + t1);
}
public MyTime (int hour, int minute, int second) {
this.hour = hour;
this.minute = minute;
this.second = second;
}
public void setTime (int hour, int minute, int second) {
try {
if (hour > 0 && hour < 23) {
this.hour = hour;
}
if (minute > 0 && minute < 59) {
this.minute = minute;
}
if (second > 0 && second < 59) {
this.second = second;
}
}
catch (IllegalArgumentException exception) {
System.out.println("Invalid entry");
}
}
Ваш код не делает ничего, если значения вне диапазона. Он должен исключать исключение, но вы просто игнорируете значения, если они недействительны. –
Является ли код волшебным образом предполагаемым, чтобы знать, что он должен бросить конкретное исключение, если оно не сработает с каким-либо условием 'if'? – John3136
так что я должен добавить ошибку исключения! – zamzam