我不确定我的问题的标题,但这是我的问题。我有下面的代码:
return Optional.of(t).filter(p -> {
PolicyNumber test = (PolicyNumber) p;
return service.getAndValidate(p).test(p);
}).map(p -> {
return p;
}).orElseThrow(() -> {
return null;
});
getAndValidate
方法工作正常,但是当我到达 map
block (这就是你所说的吗?)时,会触发错误。之前,我一直在使用 try...catch
并且我可以简单地编写如下代码:
try {
//some code
} catch (Exception e) {
e.printStackTrace();
}
有了这个,我就可以很容易地明白这场骚动是怎么回事了。我想知道如何为 Optional
执行此操作。我对它还很陌生,我正在努力对其有所了解。我已经在线查看了教程,但我看到的大多数内容都要求我有一个包含预定消息的类,以用作异常消息。如果我只是使用 return null;
显然我不会收到任何错误消息,也不会知道触发了什么错误。任何建议将不胜感激
最佳答案
在传递给 map
(示例中的 lambda)的方法主体中,您可以像在任何其他方法中一样在代码周围添加 try-catch block 。
Optional的orElseThrow
方法的目的只是在Optional为空时抛出异常。您传递给它的方法应该构造您想要抛出的异常对象(例如RuntimeException::new
),然后它被抛出。
关于java - 在可选的 orElseThrow 上返回默认/通用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56729043/