【发布时间】:2018-01-11 14:23:03
【问题描述】:
我将从输入文件的每一行生成一个 Foo 对象,并在下一步中将所有对象保存在数据库中 (Spring Data JPA)。
//read file into stream
try (Stream<String> stream = Files.lines((path), Charset.forName("ISO-8859-1"))) {
Stream<Foo> rStream = stream.map(line -> new Foo(line));
rStream.forEach(line -> fooRepository.save(line));
} catch (IOException e) {
e.printStackTrace();
}
我收到了Unhandled exception: java.lang.Exception,因为 Foo 类的构造函数可以传播来自 MyParser 类的异常:
public Foo(String row) throws Exception {
String split[] = StringUtils.split(row, "Ú");
field = MyParser.getInt(split[0]);
}
是否仍然可以使用 Java 流 API?也许只有一个很棒的流?像这样的东西:
stream.map(Foo::new).forEach(foo -> fooRepository.save(foo));
我使用 Java 8 和 Spring Boot 1.5.8。
【问题讨论】:
-
throws Exception?为您提供正确的创建 API 的权利,该 API 对于所有意图和目的都是不可用的。您希望人们如何处理new Foo可以抛出absolutely anyException的信息? API 的使用者应该如何处理这个非常有用的花絮? -
@BoristheSpider
amazing useful tidbit:) 加一! -
另外,这应该是
stream.map(Foo::new).forEach(fooRepository::save)。
标签: spring java-8 stream spring-data