gpt4 book ai didi

java - 在传递给 Java 8 Streams 的映射函数中实现检查异常处理的更好方法是什么

转载 作者:太空宇宙 更新时间:2023-11-04 09:16:08 25 4
gpt4 key购买 nike

我有一个简单的场景,我试图在不笨拙且不编写不可读的多行 lambda 的情况下进行编码。

public class StreamTest {

public static void main(String[] args) {
List<String> list = Arrays.asList("hellow", "world");
Stream<String> stream = list.stream().map(StreamTest::exceptionThrowingMappingFunction);

}

public static String exceptionThrowingMappingFunction(String s) throws Exception {
if (s.equals("world")) {
throw new Exception("world is doomed");
}
return s + " exists";
}
}

我想要的是以下选项:

  1. 如果抛出异常,则整个流失败
  2. 如果发生异常,则跳过该值并继续处理流的其余部分

我知道处理此问题的流行方法,例如在自定义FunctionalInterface中抛出RuntimeException或仅内联处理异常。

但是有什么方法,我可以扩展 Streams 并只编写像 StreamWithExceptionHandling 扩展 Stream 这样的流。它也接受 ExceptionHandler 并只实现上述行为?

感谢您花时间阅读本文。

最佳答案

尝试编写示例解决方案并将其发布到代码审查。您的问题可能很适合。

Lambda 对于单衬很有用。对于其余的:不要因为仅仅定义一个类或一个方法而感到难过。

对于选项 2,将值映射到包含操作状态和返回值的结果对象,然后按状态进行过滤。您将避免向流 API 引入非标准行为。

关于java - 在传递给 Java 8 Streams 的映射函数中实现检查异常处理的更好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58950919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com