当前位置: 首页 > 知识库问答 >
问题:

Java:捕获lambda异常[重复]

贲铭
2023-03-14

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

我试过这样:

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

Eclipse开始抱怨在processImage(responseNode)下划线,并建议它需要用try/catch包围

然后我更新到:

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

更新的代码也不起作用。


共有1个答案

景鹏云
2023-03-14

因为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);
            }
        }));
 类似资料:
  • 如果这有什么不同的话,我是在运行Java7的OSX10.8上。

  • 问题内容: 为什么Java中的某些异常未被捕获?这是代码由于没有处理的异常而完全失败。(Java版本1.4)。 我得到一个 但这有效 我懂了 我以为捕获异常会捕获所有异常?如何捕获Java中的所有异常? 问题答案: 因为某些异常不是源自-例如和。 基本上,类型层次结构是: 只能抛出派生类,因此,如果您抓住,那实际上就可以抓住一切。 ,以及任何异常,从获得 其他 比那些源自数作为 检查的异常 -他们

  • 我需要应用程序将错误写入位置。有没有我可以用Java异常处理做这件事?我已经在抛接IOerrors了,所以我不知道问题出在哪里……? 我正在从标准输入读取数据,并将其压缩并写入标准输出。 写入/dev/full不是引发异常...有没有关于如何引发异常的想法?

  • 为什么Java中的一些异常不被捕获?这是完全失败的代码,有一个未处理的异常。(Java版本1.4)。 我在线程“main”java中得到了一个 但这行得通 我在java中没有发现任何方法错误。lang.NoSuchMethodError: 我以为捕获异常会捕获所有异常?如何捕获java中的所有异常?

  • 问题内容: 我如何捕获此异常: 问题答案: 我用弹簧,所以我们通过 但是就像@KevinGuancheDarias提到的那样: 请注意,虽然这可行。 我建议通过在save之前发出findBy来解决该问题 ,因为这很麻烦,我认为不保证它将在将来的版本中使用,甚至可能在没有通知的情况下中断。