Вы устали писать “псевдокод catch” для проверяемых исключений Java? И давайте не будем думать об этом раздражающем дополнительном модульном тестировании.
Помощь уже в пути.
Позвольте мне представить вам Проныру. Сократите объем кода, который вам нужно написать, чтобы перехватывать проверенные исключения, благодаря этой библиотеке Java.
Он использует только “легальные материалы” — никакой магии, такой как манипуляции с байт-кодом. Я смотрю на тебя, проект Ломбок 😉
SneakyThrows преобразует исключение в RuntimeException. И, как мы все знаем, нам не нужно перехватывать такие типы исключений. Мы можем оставить их как Непроверенные исключения.
Как я могу его получить?
Просто скопируйте и вставьте библиотеку в качестве зависимости в ваш pom.xml или аналогичный менеджер зависимостей по выбору:
com.rainerhahnekamp sneakythrow 1.0.0
Как я могу его использовать?
Без SneakyThrow код с проверенными исключениями выглядит следующим образом:
URL url; try { url = new URL("https://www.hahnekamp.com"); } catch (MalformedURLException mue) { throw new RuntimeException(mue); }
Благодаря SneakyThrow ваш код выглядит следующим образом:
URL url = sneak(() -> new URL("https://www.hahnekamp.com"));
Отлично! Работает ли это также с потоком и лямбдами?
Конечно. Еще раз код без скрытого ввода:
private URL createURL(String url) throws MalformedURLException { return new URL(url); } Stream .of("https://www.hahnekamp.com", "https://www.austria.info") .map(url -> { try { return this.createURL(url); } catch (MalformedURLException mue) { throw new RuntimeException(mue); } }) .collect(Collectors.toList());
И теперь снова гораздо меньше кода с помощью SneakyThrow:
private URL createURL(String url) throws MalformedURLException { return new URL(url); } Stream .of("https://www.hahnekamp.com", "https://www.austria.info") .map(sneaked(this::createURL)) .collect(Collectors.toList());
Пожалуйста, обратите внимание на разницу в пробираться и прокрался .
Где я могу получить больше информации?
В статье “Игнорировать исключения в Java” более подробно описывается обоснование и базовый подход, лежащий в основе SneakyThrow.
SneakyThrow имеет открытый исходный код и доступен на GitHub .
Попробуйте это и дайте мне услышать, как это происходит. Обратная связь любого рода приветствуется.
Оригинал: “https://dev.to/rainerhahnekamp/announcing-sneakythrow-a-java-library-to-ignore-checked-exceptions-3an4”