执行JUnit Mock测试时,此代码失败。方法定义中的异常(NoResultException,PersistenceException)与方法实际返回的异常(UnknownEntityException,ServiceException)不匹配。这只是一个明显的错误吗?
应该创建项目异常(UnknownEntityException,ServiceException),以便有一种处理异常的常用方法。原始代码的创建者早已不复存在,我无法确定这是否是一个好主意。
@Repository
public class InstitutionRepository {
@PersistenceContext
private EntityManager entityManager;
public EntityInstitutionModel findInstitutionByName(String instName)
throws NoResultException, PersistenceException {
try {
Query query = null;
query = entityManager.createQuery("SELECT ex from EntityInstitutionModel ex where ex.instname = :instName");
query.setParameter("instName", instName);
EntityInstitutionModel instModel = (EntityInstitutionModel) query.getSingleResult();
System.out.println("InstitutionRepository.findInstitutionByName.getId() = " + instModel.getId());
return instModel;
}catch (NoResultException e) {
throw new UnknownEntityException(e);
} catch (Exception e) {
throw new ServiceException(e);
}
}
}
答案 0 :(得分:0)
这里没有错误;例外PersistenceException
和NoResultException
都是运行时异常,这意味着他们不要需要被声明,因此,即使他们不是'&n;抛出,无论如何都会允许代码编译。
我的建议是从您的方法中删除throws
条款,因为这只会使您作为维护者感到困惑和沮丧。
(另外,如果你最后可以对catch Exception
做一些事情,那也很好;不想去捕捉你真的不应该做的事情。那里。)