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

正确的lambda滤波器实现

裴承安
2023-03-14

我有个案子需要

  • map对象,如果映射函数抛出异常,我将其映射为null
  • filternull对象的映射流,如果为null,则抛出异常,否则收集到列表。

我该如何做到这一点呢?

list.stream().map(ob-> {
    try {
        // cannot throw only catch 
        return function(ob);
    } catch (Exception e) {
        log.error(e);
        return null;
    }            
}).filter(Objects::isNull).findFirst().orElseThrow(Exception::new);

现在我的问题是,我应该如何调整/重构上面的lambda以使抛出新的异常()onnull或其他collection(collectors.tolist())

共有1个答案

慕容成文
2023-03-14

如果您打算报告异常(这是一个好主意),那么首先就不应该将其映射到null。由于某些功能接口不允许抛出已检查的异常,您应该重新抛出包装在未检查的异常中的异常:

try {
    List<Object> result = list.stream().map(ob-> {
        try {
            // cannot throw checked exception types
            return function(ob);
        } catch(Exception e) {
            throw new CompletionException(e);
        }
    }).collect(Collectors.toList());
} catch(CompletionException ex) {
    throw (Exception)ex.getCause();
}

关键是,这将抛出原始异常,其中包含所有信息,而不是通过new exception()创建一个新实例,该实例将完全不包含有关原因的信息。

请注意,对于某些情况,已经存在专用的异常类型,例如UncheckedIoException来包装IOException。在其他情况下,声明您自己的未经检查的异常类型可能更干净,以确保它不会与应用程序的其他组件抛出的其他异常混在一起。

 类似资料:
  • 问题内容: 我基本上想做类似的事情: 这是一个示例,我不需要获取有关如何解决该特定问题的答案,它只是一个示例,它说明了我所追求的东西。 问题答案: 任何中间步骤都会影响整个流管道。您的愿望背后没有可识别的规则,即该步骤会影响随后链接的操作,但不会影响操作。如果要具有条件函数,则将其实现为这样会更加清晰: 这可以用作 要么 要么 请注意,在这些用例中,如何立即识别出传递给的谓词和函数属于同一作用域,

  • 我对验证FIR滤波器感兴趣。我已经实现了一个移动平均FIR滤波器,并编写了几个刺激来验证。 第一个刺激是一个正弦波,我希望滤波器按原样通过。档案员有。第二个刺激,我只传递一个冲动,并期望协效出现在输出上。这是我实际看到的。 然而,我觉得有两个问题需要注意。首先,不能依赖于波形形状来判断滤波器是否工作。我必须有可量化的值,并使用它作为一个基础,以得出结论,如果过滤器是工作的。例如。信噪比... 以下

  • 我有个问题。在常见的购物车网站有功能搜索产品与多个过滤器。例如,我正在搜索运动装备与一些过滤器,如: > 制造商 [x]耐克 阿迪达斯 茵宝 选项 尺寸 [x]s [x]M L [x]白色 黄色 红色 [x]蓝色 这是我的地图 部分测试数据 有了这个查询,一切都很好 但是,如果我在选项过滤器中添加更多的条件,我没有得到结果 我不知道我在映射或查询中是否错了,或者您能告诉我在这种情况下创建映射的最佳

  • 如果我有一个图像是WxHx3(RGB),我该如何决定制作多大的过滤器遮罩?它是尺寸(W和H)的函数还是其他函数?第二个、第三个……的维度是怎样的。。。过滤器是否与第一个过滤器的尺寸进行比较?(如有任何具体指示,将不胜感激。) 我看到了以下内容,但它们没有回答这个问题。 卷积神经网络的维数 卷积神经网络:每个过滤器将覆盖多少像素? 如何确定用于图像分类的卷积神经网络的参数?

  • 本文向大家介绍opencv+python实现均值滤波,包括了opencv+python实现均值滤波的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了opencv+python实现均值滤波的具体代码,供大家参考,具体内容如下 原理 均值滤波其实就是对目标像素及周边像素取平均值后再填回目标像素来实现滤波目的的方法,当滤波核的大小是3×3 3\times 33×3时,则取其自身和周围8个像素

  • 本文向大家介绍python Gabor滤波器讲解,包括了python Gabor滤波器讲解的使用技巧和注意事项,需要的朋友参考一下 解读Gabor滤波器 Fourier 变换是一种信号处理的有力工具,可以将图像从空域转换到频域,并提取到空域上不易提取到的特征。但是Fourier变换缺乏时间和位置的局部信息。 Gabor 变换是一种短时加窗Fourier变换(简单理解起来就是在特定时间窗内做Four