Why is ParseException
not caught here? When I enter a date consisting of more than 4 digits it just accepts it, but it shouldn't as I set lenient to false. When I enter letters for the year I get parse exception, but it's not caught.
Example session with too many digits in the year:
Enter name:
Ievgeniia Leleka
Enter position:
Programmer
Enter year
20023
Worker{name='Ievgeniia Leleka', position='Programmer', year='20023'}
Example with letters for year:
Enter name:
Ievgeniia Leleka
Enter position:
Programmer
Enter year
abc
java.text.ParseException: Unparseable date: "abc"
at java.base/java.text.DateFormat.parse(DateFormat.java:399)
at Main.isThisDateValid(Test.java:12)
at Main.main(Test.java:39)
Worker{name='Ievgeniia Leleka', position='Programmer', year='abc'}
public class Main {
public static boolean isThisDateValid(String dateToValidate, String dateFormat) {
if (dateToValidate == null) {
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
sdf.setLenient(false);
try {
Date date = sdf.parse(dateToValidate);
}
catch (ParseException exc) {
exc.printStackTrace();
return false;
}
return true;
}