Проверенные исключения, выбрасываемые из лямбда-выражений
Не могли бы вы объяснить, почему проверенные исключения должны быть пойманы из лямбда-выражений? Другими словами, почему следующий код не компилируется ...
public void doSomething(ObjectInputStream istream) throws IOException {
// The read method throws an IOException.
IntStream.range(0, 10).forEach(i -> someList.add(read(istream)));
}
а этот будет?
public void doSomething(ObjectInputStream istream) throws IOException {
IntStream.range(0, 10).forEach(i -> {
try {
// The read method throws an IOException.
someList.add(read(istream));
}
catch (IOException ioe) {
// Callee has to handle checked exception, not caller.
}
});
}
Кажется, что вызываемый теперь должен обрабатывать любые проверенные исключения, которые выдают, а не вызывающий.