Не могли бы вы объяснить, почему проверенные исключения должны быть обнаружены из лямбда-выражений? Другими словами, почему следующий код не компилируется ...Проверенные исключения, выброшенные из лямбда-выражений
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.
}
});
}
Похоже, вызываемая теперь должен обрабатывать любые проверяемые исключения, которые выбрасываются и не вызывающий.