Исключения, особенно проверенные, могут серьезно прервать поток логики программы, когда идиома FP используется в Java 8. Вот произвольный пример:
String s1 = "oeu", s2 = "2";
Stream.of(s1, s2).forEach(s ->
System.out.println(Optional.of(s).map(Integer::parseInt).get()));
Вышеприведенный код разбивается, когда существует исключение для неповторяемой строки. Но скажу, что я просто хочу заменить это значением по умолчанию, как я могу с помощью Optional
:
Stream.of(s1, s2).forEach(s ->
System.out.println(Optional.of(s)
.map(Integer::parseInt)
.orElse(-1)));
Конечно, это все еще не получается, потому что Optional
обрабатывает только null
s. Я хотел бы что-то следующее:
Stream.of(s1, s2).forEach(s ->
System.out.println(
Exceptional.of(s)
.map(Integer::parseInt)
.handle(NumberFormatException.class, swallow())
.orElse(-1)));
Примечание.. Это вопрос, ответивший на вопрос.