I am trying to calculate the age of the person based on the date of birth and doing some logic if its over 18 years. I had my code written and it was working fine, but I stumbled upon a code I found online and I am not getting one condition in that. The code is:
public class AgeValidation {
public static void main(String[] args) {
    getAge("29-12-1999");
}
private static void getAge(String dob1) {
    SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
    Date dob;
    try {
        dob = format.parse(dob1);
        Calendar dob2 = Calendar.getInstance();
        dob2.setTime(dob);
        Calendar today = Calendar.getInstance();
        int age = today.get(Calendar.YEAR) - dob2.get(Calendar.YEAR);
        if(dob2.after(today)) {
            System.out.println("Future date not allowed");
            System.exit(0);
        }
        if (today.get(Calendar.MONTH) < dob2.get(Calendar.MONTH)) {
            System.out.println("First if condition");
            age--;
        } else if (today.get(Calendar.MONTH) == dob2.get(Calendar.MONTH)
                && today.get(Calendar.DAY_OF_MONTH) < dob2.get(Calendar.DAY_OF_MONTH)) {
            System.out.println("else if condition");
            age--;
        }
        if (age < 18) {
            System.out.println(age);
            System.out.println("Underage");
        } else {
            System.out.println(age);
            System.out.println("18 years");
            //Some logic
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }
}
}
Need addressing on below points:
- I have added a condition if DOB year is after Current year it should not proceed. - if(dob2.after(today)) { System.out.println("Future date not allowed"); System.exit(0); }
Is it correct to use System.exit(0); or is there some better approach to stop further execution.
- In the code that I found online I saw a condition as - ` if (today.get(Calendar.MONTH) < dob2.get(Calendar.MONTH))`- I am not getting in which scenario will this be executed. 
- Is there any use case in which this code will not work (I cannot think of any) 
 
     
     
    