Более читаемый способ:
class A {
void foo() throws MyException() {
...
}
}
Просто спрячьте его в RuntimeException
, чтобы пройти его forEach()
void bar() throws MyException {
Stream<A> as = ...
try {
as.forEach(a -> {
try {
a.foo();
} catch(MyException e) {
throw new RuntimeException(e);
}
});
} catch(RuntimeException e) {
throw (MyException) e.getCause();
}
}
Хотя на данный момент я не буду держитесь против кого-то, если они говорят, что пропускают потоки и идут с циклом for, если:
Collection.stream()
, т. е. не прямолинейный перевод в цикл for. parallelstream()