Рубрики
Без рубрики

Объявляю о подлости: Библиотека Java для игнорирования проверенных исключений

Представляем SneakyThrow. Библиотека Java для игнорирования проверенных исключений. Помеченный как java, обработка исключений, showdev.

Вы устали писать “псевдокод 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”