Общие Исключения В Лямбда-Функциях

УПД: Добавлен пример с ленивыми вычислениями поверх стандартных потоков.

Как известно из функциональных интерфейсов в Stream API, вы не можете создавать контролируемые исключения.

Если по каким-то причинам это необходимо (например, работа с файлами, базами данных или по сети), вам придется обернуть их в RuntimeException. Это хорошо работает, если ошибки игнорируются, но если их нужно обрабатывать, код становится громоздким и трудным для чтения.

Я заинтересовался, можно ли объявлять интерфейсы и методы с обобщенными исключениями и неожиданно обнаружил, что это возможно.

Давайте определим такой функциональный интерфейс; он отличается от стандартной функции интерфейс только при наличии третьего универсального типа для выброшенного исключения.

   

public interface FunctionWithExceptions<A, B, T extends Throwable>{

Теги: #java #generic #Exception #обработка исключений #stream api #функциональные интерфейсы #java
Вместе с данным постом часто просматривают: