new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("run");
throw new SomeRandomException();
}
}, 1000, 1000);
Вывод: run (генерируется исключение)
Вот проблема: мне нужна задача таймера для проверки определенных условий в базе данных (или чего-то еще). Она работала нормально, но иногда база данных (или что-то еще) возвращает некоторые ошибки, генерируется исключение, и таймер выходит из строя, и тогда ни одна задача таймера не выполняется снова. Есть ли какая-то реализация таймера, которая продолжает работать после того, как исключение было выброшено в run ()
.
Я могу
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
System.out.println("run");
throw new SomeRandomException();
} catch (Exception e) {
System.out.println("dummy catch");
}
}
}, 1000, 1000);
, но это кажется неуместным.
Другая альтернатива - написать свою собственную реализацию класса Timer, проглатывая исключения метода run (что тоже кажется неправильным).