Как перегенерировать исключение внутри лямбда-выражения?

Как мне обработать и повторно вызвать исключение в лямбда? Когда я пытаюсь окружить вызов блоком try/catch, он просто перехватывает его внутри лямбда-выражения. У меня есть ServiceException в сигнатуре метода, поэтому я хочу просто перебросить его. Возможно ли это или я что-то упускаю?

 BiFunction<Account, LocalDate, AccountBalance> getBalance;

 getBalance = (account, date1) -> balanceProvider.getBalance(account, date1); //balanceProvider.getBalance unhandled ServiceException

person developer1    schedule 17.03.2020    source источник
comment
Стандартного способа сделать это не существует, это не значит, что это невозможно. Вот некоторая потенциально полезная информация; dzone.com/articles/   -  person Jason    schedule 17.03.2020
comment
не могли бы вы показать, где вы вызываете BiFunction?   -  person Leonardo Meinerz Ramos    schedule 17.03.2020


Ответы (1)


Раньше я ловил проверенное исключение и повторно выдавал непроверенное. Что-то типа:

IntStream.range(1,3).forEach(i -> {
        try {
            TimeUnit.SECONDS.sleep(10);
        } catch (InterruptedException e) {
            throw new RuntimeException("InterruptedException was caught");
        }
    });

Или в вашем случае:

getBalance = (account, date1) -> {
    try {
        balanceProvider.getBalance(account, date1)
    } catch (ServiceException e) {
        throw new ServiceRTException("blabla");
    }
};
person Eduard Dubilyer    schedule 17.03.2020