как лучше всего обрабатывать 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?