I have exceptions created for every condition that my application does not expect. UserNameNotValidException, PasswordNotCorrectException etc.
UserNameNotValidException
PasswordNotCorrectException
Because they're things that will happen normally. Exceptions are not control flow mechanisms. Users often get passwords wrong, it's not an exceptional case. Exceptions should be a truly rare thing, UserHasDiedAtKeyboard type situations.
UserHasDiedAtKeyboard