Spring Boot 调试器捕获异常,但如果没有调试器,则只有toString触发异常

wrrgggsh  于 2023-03-29  发布在  Spring
关注(0)|答案(1)|浏览(119)

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),就会抛出异常。
你能告诉我为什么会这样吗?也许是懒惰?

hpxqektj

hpxqektj1#

只有当代码试图访问不存在的实体时,才会抛出EntityNotFoundException。例如,通过调用它的任何方法。检查具有给定id的实体是否存在于数据库中的正确方法是使用Optional。例如:

Optional<AuthorEntity> check = authorRepository.getById(authorId);
if (check.isPresent() {
  // found
} else {
  // not found
}

相关问题