Какова наилучшая практика для обработки InterruptedException
при использовании Throwables.propagate(e) в Guava?
Мне нравится использовать throw Throwables.propagate(e)
, особенно в методах, которые не выбрасывают исключенные исключения и где обработка исключений является ответственностью вызывающего. Но это не делает то, что я ожидаю с InterruptedException.
Я не хочу потерять тот факт, что поток был прерван, поэтому я в конечном итоге пишу такие вещи, как:
public void run() {
Callable c = ...;
try {
c.call();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw Throwables.propagate(e);
} catch (Exception e) {
throw Throwables.propagate(e);
}
}
Есть ли способ сделать это в Гуаве? Есть ли способ (обратно совместимый?!) использовать нечто вроде Throwables.propagate(), которое устанавливает поток как прерванный, если он обертывает и распространяет InterruptedException?