我创建了一个方法,该方法检查列表中是否存在具有特定ID的元素,如果该元素不存在,则抛出异常。我只是不知道如何检查match的值是否为false,然后抛出我的异常AccessToMessageForbiddenException。

private void validMessage(Long messageId) {
    List<Message> messageList = messageService.findBySender(1L);
    messageList.addAll(messageService.findByRecipient(1L));

    boolean match = messageList.stream().anyMatch(v -> messageId.equals(v.getId()));

    //How to throw an exception without an if construct
}

最佳答案

您可以使用findAny()代替anyMatch,如果结果Optional为空,则引发异常。

这不需要if语句。只需使用orElseThrow(),如果Optional为空,则会引发异常:

private void validMessage(Long messageId) {
    List<Message> messageList = messageService.findBySender(1L);
    messageList.addAll(messageService.findByRecipient(1L));

    messageList.stream()
               .filter(v -> messageId.equals(v.getId()))
               .findAny()
               .orElseThrow(AccessToMessageForbiddenException::new);
}

07-27 13:17