Java8:在java8 lambda中处理已检查的异常,如Stream.forEach()方法

时间:2015-04-23 14:12:42

标签: java java-8

我对Java API中流api提供的功能非常着迷。 我尝试使用流写文件,但它给出了一个例外。我想要一种方法来处理这个异常。我知道PrintWriter有一个write()方法,它不会抛出异常。我试图了解如何传递可以抛出异常的方法的策略。可能通过编写自己的自定义异常处理程序我正在研究这个问题,一旦完成,我将分享。

写入数据的方法

private static void writeDataToSecondFileWithJavaStreams(File inputFile) throws IOException {
    Stream<String> fileData = Files.lines(Paths.get(inputFile.getParent(), inputFile.getName()));
    File outputFile = new File(inputFile.getParent(),"outputFile1.txt");
    BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
   // fileData.parallel();
    // fileData.forEach(System.out::println); // this works perfectly fine
   fileData.forEach(writer::write);
    writer.close();
    System.out.println("File writing completed");

}

fileData.forEach(System.out::println)完全正常,但我不想将数据写入控制台而不是输出文件。

我在fileData.forEach(writer::write);这一行收到错误 UnHandled IOException 。我知道它是因为forEach期望一个lambda函数不会抛出任何异常。

关于如何使其发挥作用的建议?

0 个答案:

没有答案