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