0

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

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

谢谢

4

2 回答 2

1

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

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

  stream.peek(Try::get)

NonFatalException(<original-exception>)这只会在失败发生时抛出任何其他内容。


请注意,我们将在 Javaslang 3.0 中稍微改变行为。Try 将不再包装异常。相反,它会“偷偷地抛出”原始异常。这在 Java 中可以通过一个小技巧来实现。

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

于 2017-03-12T00:25:21.490 回答
0

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

throw new RuntimeException(checkedException);
于 2017-02-28T01:07:34.193 回答