Скажем, у меня есть метод, который генерирует исключение во время выполнения. Я использую Stream
для вызова этого метода для элементов в списке.
class ABC {
public void doStuff(MyObject myObj) {
if (...) {
throw new IllegalStateException("Fire! Fear! Foes! Awake!");
}
// do stuff...
}
public void doStuffOnList(List<MyObject> myObjs) {
try {
myObjs.stream().forEach(ABC:doStuff);
} catch(AggregateRuntimeException??? are) {
...
}
}
}
Теперь я хочу, чтобы все элементы в списке были обработаны, и любые исключения во время выполнения для отдельных элементов, которые должны быть собраны в "суммарное" время выполнения, которое будет выбрано в конце.
В моем реальном коде я делаю сторонние API-вызовы, которые могут вызывать исключения во время выполнения. Я хочу удостовериться, что все элементы обработаны, и все ошибки сообщаются в конце.
Я могу придумать несколько способов взломать это, например, функцию map()
, которая ловит и возвращает исключение (..shudder..). Но есть ли у нас родной способ сделать это? Если нет, есть ли другой способ реализовать его чисто?