Как мне связать исключение SQLE с непроверенным? - PullRequest
2 голосов
/ 07 декабря 2010

Мы все знаем, что SQLException является проверенным исключением, и большинство из нас согласны с тем, что проверенное исключение является многословным и приводит к загрязнению выброса / улова.

Какой подход следует выбрать, чтобы избежать выброса SQLException?Какая обертка / техника / библиотека рекомендуется?(например, DataAccessException для людей Spring, но я не хочу использовать Spring)

Ответы [ 2 ]

5 голосов
/ 07 декабря 2010

Просто оберните это как new RuntimeException(jdbce).Или защитите свое собственное исключение, которое расширяет исключение времени выполнения, и используйте его.Я не думаю, что здесь требуется какая-либо основа.Даже весенние обертки проверяют исключения, не проверяя каждый раз, когда это необходимо.

2 голосов
/ 07 декабря 2010

Если вы хотите рассматривать отмеченное исключение как непроверенное, вы можете сделать

До Java 7 вы можете сделать

} catch(SQLException e) {
   Thread.currentThread().stop(e);
}

Однако в Java 8 вы можете сделать

/**
 * Cast a CheckedException as an unchecked one.
 *
 * @param throwable to cast
 * @param <T>       the type of the Throwable
 * @return this method will never return a Throwable instance, it will just throw it.
 * @throws T the throwable as an unchecked throwable
 */
@SuppressWarnings("unchecked")
public static <T extends Throwable> RuntimeException rethrow(Throwable throwable) throws T {
    throw (T) throwable; // rely on vacuous cast
}

и вызов

} catch(SQLException e) {
   throw rethrow(e);
}

Проверенные исключения являются функцией компилятора и не обрабатываются по-разному во время выполнения.

...