jaka jest najlepsza praktyka w obsłudze InterruptedException
s przy użyciu Throwables.propagate (e) w Guava?Guava: Throwables.propagate i InterruptedException
Uwielbiam używać throw Throwables.propagate(e)
, szczególnie w metodach, które nie zawierają sprawdzonych wyjątków i gdzie obsługa wyjątków jest obowiązkiem dzwoniącego. Ale nie robi to, czego oczekiwałbym dzięki InterruptedException.
Nie chcę stracić fakt, że wątek został przerwany, więc skończę pisać takie rzeczy jak:
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);
}
}
Czy istnieje sposób, aby zrobić to w Guava? Czy istnieje (kompatybilny wstecz ?!) sposób użycia czegoś takiego jak Throwables.propagate(), który ustawia wątek jako przerwany, jeśli jest to pakowanie i propagowanie wyjątku InterruptedException?
Podnosiłbym to jako żądanie funkcji w Guava – artbristol