当javaslang Try流包含异常时如何抛出

时间:2017-02-27 20:17:42

标签: java java-stream vavr

在javaslang中,如果我有Stream<Try<MyClass>,当流中的任何项目包含已检查的异常时,如何抛出? 我不能这样做因为peek不接受投掷lambda

stream.peek(t -> t.onFailure((t2) -> {throw t2.getCause();}));

感谢

2 个答案:

答案 0 :(得分:1)

免责声明:我是Javaslang的创建者

因为Try在未经检查的NonFatalException中包装了一个已检查的异常,所以调用

就足够了
  stream.peek(Try::get)

除了失败之外,这只会抛出NonFatalException(<original-exception>)

请注意,我们将在Javaslang 3.0中略微更改行为。尝试不再包装异常。相反,它会'偷偷摸摸'原来的例外。这可以在Java中使用little trick

但是,Javaslang 3.0发布需要一些时间。目前我们的工作在2.1.0。

答案 1 :(得分:0)

在RuntimeException中包装已检查的异常。

throw new RuntimeException(checkedException);