我正在解决一个奇怪的问题,进行集成测试时调用我的控制器从数据库获取一个不存在的对象。
public Optional<T> get(Long id) {
try {
return Optional.ofNullable(repository.getOne(id));
} catch(EntityNotFoundException e) {
return Optional.empty();
}
}
当 getOne(…)
无法找到任何内容时,我期望会出现一个 EntityNotFoundException
,但实际上什么也没有发生。如果我检查结果,我可以看到我有一个空的实体,并且它有一个处理程序链接 "threw EntityNotFoundException
",但我们没有进入 catch 块,并且我返回了这个奇怪实体的可选项。
我无法理解这种行为。