I have exceptions created for every condition that my application does not expect. UserNameNotValidException, PasswordNotCorrectException etc.
UserNameNotValidException
PasswordNotCorrectException
Security is conflated with your example: You shouldn't tell an attacker that a username exists, but the password is wrong. That's extra information you don't need to share. Just say "the username or password is incorrect."