在javaslang中,如果我有Stream<Try<MyClass>
,当流中的任何项目包含已检查的异常时,如何抛出?
我不能这样做因为peek不接受投掷lambda
stream.peek(t -> t.onFailure((t2) -> {throw t2.getCause();}));
感谢
答案 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);