Я создал 2 пользовательских исключения для обработки создания и сохранения новых пользователей в БД.Электронная почта (имя пользователя) является уникальным идентификатором, поэтому, если электронная почта дублируется, следует создать исключение, так как уникальный идентификатор уже существует.Я также делаю совпадение с подтверждением пароля.Это подтверждение совпадения также приведет к пользовательскому исключению паролей, которые не совпадают.Эти 2 части работают правильно независимо друг от друга, однако, когда я собираю все вместе и проверяю, если подтверждение пароля не удается, его выдача имя пользователя уже существует исключение, а пароли не совпадают с исключением.Зачем?
Я пытался изменить порядок кода, но это не имеет значения.Я также попробовал если / еще, а не просто, но получил те же результаты
//Username(email) must be unique
try {
//password and confirm password must match
if (!newGcUser.getPassword().equals(newGcUser.getConfirmPassword())) {
throw new PasswordMatchException("password and confirm password does not match");
}
//if passwords match - persist to DB
newGcUser.setPassword(bCryptPasswordEncoder.encode(newGcUser.getPassword()));
//Do NOT persist or show the confirm Password
newGcUser.setConfirmPassword("");
//set user
newGcUser.setName(newGcUser.getUsername());
return userRepository.save(newGcUser);
} catch (Exception e) {
throw new UsernameAlreadyExistsException("Username: '" + newGcUser.getUsername() + "' already exists.");
}
}
Я использую Почтальон для тестирования.Если я проверяю письмо, которое, как мне известно, не зарегистрировано, и не совпадает с паролями, вместо PasswordMatchException появляется сообщение UsernameAlreadyExistsException