java - 在可选的 orElseThrow 上返回默认/通用异常

标签 java java-8 option-type

我不确定我的问题的标题,但这是我的问题。我有下面的代码:

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/

相关文章:

java - 将具有大量列的 html 表格导出为 PDF

java - 扫描仪 in.hasNextInt() 永远不会返回 true

java - Spring-Data-Jpa Repository - 实体列名上的下划线

java - 如何使用 Java 8 方法对 List<List<>> 结构中的每个元素应用一些更改

Swift 嵌套的非可选结构给出了可选的

java - 找不到 Log4jConfigListener -- 上下文无法启动

Java 8 HashMap<整数, ArrayList<整数>>

java-8 - 如何解决状态大小问题的慢速检查点问题?

ios - Swift:测试 nil 的可选值

Elm:多个可能命名的模块