我正在开发一个 java web 应用程序,我有一些关于设计的问题。
基本上在其当前版本中,它在很大程度上依赖于捕获异常来确定控制流。
例如,在我的一个 spring 服务类中,我有以下方法来检查作为参数给出的电子邮件是否存在于数据库中。
@Override
public boolean validateEmailAddressDoesNotExist(String accountEmailAddress) {
try {
return !dao.checkIfEmailAddressAlreadyExists(accountEmailAddress);
} catch (NoResultException re) {
log.error("NoResultException", re);
} catch (RuntimeException re) {
log.error("RuntimeException", re);
}
return true;
}
//from "dao" class
public boolean checkIfEmailAddressAlreadyExists(String accountEmailAddress) {
return (loadAccountFromAccountEmailAddress(accountEmailAddress) == null ? false : true);
}
//also from "dao" class
public Account loadAccountFromAccountEmailAddress(String accountEmailAddress) {
return entityManager.createNamedQuery("Account.findByEmailAddress", Account.class).setParameter("accountEmailAddress", accountEmailAddress).getSingleResult();
}
我怀疑我目前的设计可能是错误的,但如果能阅读您对此的评论和意见,以及您认为它在多大程度上存在缺陷,我将不胜感激。