제어 흐름에 대한 예외를 사용하는 것이 좋지 않다고 읽었지만 예외를 throw하지 않고 어떻게 쉽게 다음을 달성 할 수 있습니까? 따라서 사용자가 이미 사용중인 사용자 이름을 입력하면 입력 필드 옆에 오류 메시지를 표시하려고합니다. 내 userService의 저장 방법제어 흐름에 대한 예외 사용
public String signUp() {
User user = new User(username, password, email);
try {
if (userService.save(user) != null) {
// ok
}
else {
// not ok
}
}
catch (UsernameInUseException e) {
// notify user that username is already in use
}
catch (EmailInUseException e) {
// notify user that email is already in use
}
catch (DataAccessException e) {
// notify user about db error
}
return "index";
}
: 예외를 사용
@Override
@Transactional
public User save(User user) {
if (userRepository.findByUsername(user.getUsername()) != null) {
LOGGER.debug("Username '{}' is already in use", user.getUsername());
throw new UsernameInUseException();
}
else if (userRepository.findByEmail(user.getEmail()) != null) {
LOGGER.debug("Email '{}' is already in use", user.getEmail());
throw new EmailInUseException();
}
user.setPassword(BCrypt.hashpw(user.getPassword(), BCrypt.gensalt()));
user.setRegisteredOn(DateTime.now(DateTimeZone.UTC));
return userRepository.save(user);
}
프레임 워크를 사용하고 있습니까? 아니면 그냥 평범한 Servlet-JSP 기반 웹 응용 프로그램입니까? –
JSF 2.2, Spring 3.2 및 Hibernate 4.2를 사용하고 있습니다. – perak