请看以下代码:
使用未检查异常无法达到预期效果吗?
我可以将
有什么好的想法吗?
考虑下面的代码:
auditlog.getMessages()
.stream()
.filter(m -> messageId.equals(m.getMessageid()))
.findFirst()
.orElseThrow(NoMessageFoundException::new)
NoMessageFoundException
是一个自定义的未检查异常,继承自 RuntimeException
。当 findFirst()
返回一个空的 Optional 时,我期望会抛出 NoMessageFoundException
,但是实际上代码并没有抛出异常而是继续执行了。使用未检查异常无法达到预期效果吗?
我可以将
NoMessageFoundException
改为已检查异常,但这样我就必须编写一个 try/catch
块或某种包装器来捕获异常,如此文所述(链接),但我不希望这样做。有什么好的想法吗?
Supplier<RuntimeException>
会导致 lambda 返回编译错误。方法引用中的返回类型错误:无法将 MappingFailedException 转换为 xxx
。 - Homewrecker