【发布时间】:2019-06-07 16:53:17
【问题描述】:
我创建了 2 个自定义异常来处理创建新用户并将其持久保存到数据库。电子邮件(用户名)是唯一 ID,因此如果电子邮件重复,则应引发异常,因为唯一 ID 已经存在。 我也在做一个密码确认匹配。此确认匹配也会引发密码不匹配的自定义异常。这两部分相互独立地正常工作,但是,当我将所有内容放在一起并进行测试时,如果密码确认失败,它会抛出用户名已经存在异常而不是密码不匹配异常。为什么?
我已经尝试重新排序代码,但这似乎并不重要。我也试过 if/else 而不是 just if 但得到了相同的结果
//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.");
}
}
我正在使用 Postman 进行测试。 如果我测试一封我知道未注册的电子邮件并且与密码不匹配,我会收到 UsernameAlreadyExistsException 消息而不是 PasswordMatchException
【问题讨论】:
标签: java spring-boot exception