Java:捕获 lambda 异常

标签 java lambda java-8

<分区>

无法将流对象包装在 try/catch block 中。

我试过这样的:

reponseNodes.stream().parallel().collect(Collectors.toMap(responseNode -> responseNode.getLabel(), responseNode -> processImage(responseNode)));

Eclipse 开始提示在 processImage(responseNode) 下划线,并建议它需要 Surround with try/catch

然后我更新为:

return reponseNodes.stream().parallel().collect(Collectors.toMap(responseNode -> responseNode.getLabel(), responseNode -> try { processImage(responseNode) } catch (Exception e) { throw new UncheckedException(e); }));

更新后的代码也不起作用。

最佳答案

因为lambda不再是一条语句,每条语句(包括processImage(responseNode))后面都必须跟一个;。同理,lambda也需要显式返回语句(return processImage(responseNode)),并且必须包装在 {} 中。

因此:

return reponseNodes.stream().parallel()
        .collect(Collectors.toMap(responseNode -> responseNode.getLabel(), responseNode -> {
            try {
                return processImage(responseNode);
            } catch (Exception e) {
                throw new UncheckedException(e);
            }
        }));

关于Java:捕获 lambda 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114632/

相关文章:

java - 在 Java 8 中是否有一种优雅的方法来应用过滤器数组?

java - 在 CompletableFuture 的函数中抛出原始(内部)异常?

java - 在 Java 中从 Oracle 中提取 XMLType 值时出现异常

java lambda :How to count total items in a list?

java - 为什么这个函数允许我使用 lambda 表达式

json - 使用 java 8 将 Map<Object, List<Object>> dataMap 转换为 json

java - writeUTF 和 writeChars 有什么区别?

JAVA如何将.map()的返回值追加到列表中而不是返回列表的列表

java - 迭代 nextLine 函数的问题

javascript - 消除重复代码 : lambda loop parameter passing