【发布时间】:2017-01-20 15:13:53
【问题描述】:
我正在处理我的 dao 层实现,但我对异常处理部分感到困惑。我有很多抛出异常的解决方案,那么在 dao 层处理异常的最佳解决方案是什么:
这是我的代码:
我的 DAO 界面:
@Repository
@Transactional
public interface GnqstRepository<T,V> {
public T save(T t);
public void delete(V v)throws GnqstRepositoryNotFoundException;
public T update(T t);
public T find(V v)throws GnqstRepositoryNotFoundException;
public List<T> findAll();
}
这是我的实体实现:
public class EnqueteurRepository implements GnqstRepository<Enqueteur, Long> {
@PersistenceContext(name="gnst")
private EntityManager em ;
private static final Logger logger = Logger.getLogger(EnqueteurRepository.class);
@Override
public Enqueteur find(Long v)throws GnqstRepositoryNotFoundException {
Enqueteur enqueteur = em.find(Enqueteur.class,v);
if(enqueteur!= null){
logger.info("EnqueteurRepository : l'enqueteur avec l'ID : "+v+" a été trouvé avec succès.");
return enqueteur;
}
else{
throw new GnqstRepositoryNotFoundException("L'identifiant entré ne ressemble pas à un ID enqueteur valide.");
}
}
}
在这里我创建了一个已检查的异常我的问题是有没有比这更好的方法来向下一层抛出异常以防例如 find 方法找不到实体?
我的目标是,当 IHM 中的用户单击按钮查找搜索时,如果未找到结果,则 IHM 中应显示一条消息,在我的情况下,我通过 dao 层、业务层到表示层我的消息抛出异常问题是谁最好抛出异常或返回 null 到表示层然后检查返回消息给用户?提前谢谢
【问题讨论】:
-
你想通过抛出异常来解决这个问题吗?还是您愿意接受不同的解决方案?例如,您可以返回 Optional 对象而不是抛出异常。
-
我更新了我的问题