Sping Boot 2.7.10
ArrayList<AuthorEntity> getAuthorArrayList(ArrayList<Integer> authorsIds) {
ArrayList<AuthorEntity> result = new ArrayList<>();
for (Integer authorId : authorsIds) {
try {
AuthorEntity author = authorRepository.getById(authorId);
// author.toString();
result.add(author);
} catch (EntityNotFoundException e) {
System.out.println("EntityNotFoundException" + e.getMessage());
}
}
return result;
}
如果我取消注解toString(),catch块就能工作。如果我注解掉这一行,cacth块就不能工作(这既没有断点证明,也没有打印的消息证明)。
顺便说一下,调试器总是显示,如果我计算表达式authorRepository.getById(authorId),就会抛出异常。
你能告诉我为什么会这样吗?也许是懒惰?
1条答案
按热度按时间hpxqektj1#
只有当代码试图访问不存在的实体时,才会抛出EntityNotFoundException。例如,通过调用它的任何方法。检查具有给定id的实体是否存在于数据库中的正确方法是使用Optional。例如: