我创建了一个方法,用于检查列表中是否存在具有特定 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);
}
关于java - 如何在没有 if 构造的情况下引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45462021/