当前位置:  开发笔记 > 编程语言 > 正文

Java:捕获lambda异常

如何解决《Java:捕获lambda异常》经验,为你挑选了1个好方法。

无法将流对象包装在一个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); }));

更新的代码也不起作用.



1> NthPortal..:

因为lambda不再是单个语句,所以每个语句(包括processImage(responseNode)必须后跟a ;.出于同样的原因,lambda也需要一个显式的return语句(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);
            }
        }));

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有