Java Program to check the validity of a Password using User Defined Exception

05 Jun, 2020
Password checker program basically checks if the password is valid or not based on password policies mention below:
Password should not contain any space.
Password should contain at least one digit(0-9).
Password length should be between 8 to 15 characters.
Password should contain at least one lowercase letter(a-z).
Password should contain at least one uppercase letter(A-Z).
Password should contain at least one special character ( @, #, %, &, !, $, etc....).
Example:
Input: GeeksForGeeks 
Output: Invalid Password!
This input contains lowercase 
as well as uppercase letters 
but does not contain digits 
and special characters.

Input: Geek007@GFG
Output: Valid Password
This input satisfies all password
policies mentioned above.

Approach:
Create a User-defined exception named “InvalidPasswordException” as explained below.
Then check for the validity of the password on the required parameters.
If any parameter is not met, then throw the InvalidPasswordException.
Below is the implementation of the above approach:
// Java Program to check the validity// of a Password using User-Defined Exception  // Class for user-defined InvalidPasswordExceptionclass InvalidPasswordException extends Exception {      int passwordConditionViolated = 0;      public InvalidPasswordException(int conditionViolated)    {        super("Invalid Password: ");        passwordConditionViolated = conditionViolated;    }      public String printMessage()    {        // Call constructor of parent Exception        // according to the condition violated        switch (passwordConditionViolated) {          // Password length should be        // between 8 to 15 characters        case 1:            return ("Password length should be"                    + " between 8 to 15 characters");          // Password should not contain any space        case 2:            return ("Password should not"                    + " contain any space");          // Password should contain// at least one digit(0-9)        case 3:            return ("Password should contain"                    + " at least one digit(0-9)");          // Password should contain at least        // one special character ( @, #, %, &, !, $ )        case 4:            return ("Password should contain at "                    + "least one special character");          // Password should contain at least        // one uppercase letter(A-Z)        case 5:            return ("Password should contain at"                    + " least one uppercase letter(A-Z)");          // Password should contain at least        // one lowercase letter(a-z)        case 6:            return ("Password should contain at"                    + " least one lowercase letter(a-z)");        }          return ("");    }}  // Driver Classpublic class PasswordValidator {      // A utility function to check    // whether a password is valid or not    public static void isValid(String password)        throws InvalidPasswordException    {          // for checking if password length        // is between 8 and 15        if (!((password.length() >= 8)              && (password.length() <= 15))) {            throw new InvalidPasswordException(1);        }          // to check space        if (password.contains(" ")) {            throw new InvalidPasswordException(2);        }        if (true) {            int count = 0;              // check digits from 0 to 9            for (int i = 0; i <= 9; i++) {                  // to convert int to string                String str1 = Integer.toString(i);                  if (password.contains(str1)) {                    count = 1;                }            }            if (count == 0) {                throw new InvalidPasswordException(3);            }        }          // for special characters        if (!(password.contains("@") || password.contains("#")              || password.contains("!") || password.contains("~")              || password.contains("$") || password.contains("%")              || password.contains("^") || password.contains("&")              || password.contains("*") || password.contains("(")              || password.contains(")") || password.contains("-")              || password.contains("+") || password.contains("/")              || password.contains(":") || password.contains(".")              || password.contains(", ") || password.contains("<")              || password.contains(">") || password.contains("?")              || password.contains("|"))) {            throw new InvalidPasswordException(4);        }          if (true) {            int count = 0;              // checking capital letters            for (int i = 65; i <= 90; i++) {                  // type casting                char c = (char)i;                  String str1 = Character.toString(c);                if (password.contains(str1)) {                    count = 1;                }            }            if (count == 0) {                throw new InvalidPasswordException(5);            }        }          if (true) {            int count = 0;              // checking small letters            for (int i = 90; i <= 122; i++) {                  // type casting                char c = (char)i;                String str1 = Character.toString(c);                  if (password.contains(str1)) {                    count = 1;                }            }            if (count == 0) {                throw new InvalidPasswordException(6);            }        }          // The password is valid    }      // Driver code    public static void main(String[] args)    {          String password1 = "GeeksForGeeks";          try {            System.out.println("Is Password "                               + password1 + " valid?");            isValid(password1);            System.out.println("Valid Password");        }        catch (InvalidPasswordException e) {            System.out.print(e.getMessage());            System.out.println(e.printMessage());        }          String password2 = "Geek007@GFG";        try {            System.out.println("\nIs Password "                               + password2 + " valid?");            isValid(password2);            System.out.println("Valid Password");        }        catch (InvalidPasswordException e) {            System.out.print(e.getMessage());            System.out.println(e.printMessage());        }    }}
Is Password GeeksForGeeks valid?
Invalid Password: Password should contain at least one digit(0-9)

Is Password Geek007@GFG valid?
Valid Password

Code_Mech
Java Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Factory method design pattern in Java
Java Program to Remove Duplicate Elements From the Array
Java program to count the occurrence of each character in a string using Hashmap
Iterate through List in Java
How to Iterate HashMap in Java?
Program to print ASCII Value of a character
Iterate Over the Characters of a String in Java
Traverse Through a HashMap in Java
Remove first and last character of a string in Java
How to Convert Char to String in Java?