在 javaslang 中,如果我有Stream<Try<MyClass>
,当流中的任何项目包含已检查的异常时,我该如何抛出?我不能这样做,因为 peek 不接受抛出 lambda
stream.peek(t -> t.onFailure((t2) -> {throw t2.getCause();}));
谢谢
在 javaslang 中,如果我有Stream<Try<MyClass>
,当流中的任何项目包含已检查的异常时,我该如何抛出?我不能这样做,因为 peek 不接受抛出 lambda
stream.peek(t -> t.onFailure((t2) -> {throw t2.getCause();}));
谢谢
免责声明:我是 Javaslang 的创建者
因为 Try 将已检查的异常包装在未检查的 NonFatalException 中,所以调用
stream.peek(Try::get)
NonFatalException(<original-exception>)
这只会在失败发生时抛出任何其他内容。
请注意,我们将在 Javaslang 3.0 中稍微改变行为。Try 将不再包装异常。相反,它会“偷偷地抛出”原始异常。这在 Java 中可以通过一个小技巧来实现。
但是,Javaslang 3.0 发布还需要一些时间。目前我们在 2.1.0 上工作。
将检查的异常包装在 RuntimeException 中。
throw new RuntimeException(checkedException);