强制包装抛出Reactor Flux.in

时间:2018-05-07 08:40:43

标签: java stream flux reactive reactor

目前我有以下代码:

    private Flux<String> tailFileManual(Path path) {
      final File file = path.toFile();

      return Flux.using(
            () -> new BufferedReader(new FileReader(file)),
            reader -> Flux.create(emitter -> {
                while (true) {
                    final String line = reader.readLine();
                    if (line == null) {
                        Thread.sleep(250);
                    } else if (line.equals("null")) {
                        emitter.complete();
                        break;
                    } else {
                        emitter.next(line);
                    }
                }
            }),
            BufferedReader::close
    );
}

运行最新的reactor-core(3.1.7),java抱怨我必须用try-catch包装每个抛出的类型(在本例中为IOException)。现在这个代码在rx-java2中使用Flowable.using运行,但由于某种原因Reactor迫使我手动包装try-catch中的每个可能的抛出错误,使得此代码详细 ......有什么我想念的吗?

我不想用try-catch包装FileReaderThread.sleepBufferedReader::close,因此忽略了短lambda表达式的全部要点

0 个答案:

没有答案