Я пытаюсь обернуть методы, которые выдают проверенные исключения. Я выполняю следующие шаги, указанные в этом URL: https://www.rainerhahnekamp.com/en/ignoring-exceptions-in-java/
Интересно, когда я пишу код, подобный этому:
IntStream.range(1, locales.length)
.mapToObj(i -> locales[i].toString())
.forEach(wrap(this::testLocale));
работает нормально, но когда я пишу так:
IntStream.range(1, locales.length)
.mapToObj(i -> locales[i].toString())
.forEach(s -> wrap(testLocale(s)));
Intellij жалуется на "необработанное исключение: java.lang.Exception"
здесь testLocale выглядит так:
void testLocale(String s) throws Exception
Функция обтекания выглядит следующим образом:
public static <T> Consumer<T> wrap(WrapConsumer<T> wrapper) {
return t -> {
try {
wrapper.accept(t);
} catch(Exception exception) {
throw new RuntimeException(exception);
}
};
}
, а WrapConsumer - это функциональный интерфейс с сигнатурой Consumer:
@FunctionalInterface
public interface WrapConsumer<T> {
void accept(T t) throws Exception;
}
Я бьюсь головой, пытаясь понять, почему Intellijжалуется на основании того, как я пишу лямбда