Como reiniciar cronograma quando scheduleWithFixedDelay lança uma exceção?

eu usoScheduledExecutorService para agendar algumas tarefas que precisam ser executadas periodicamente. Eu quero saber se esse código funciona para recuperar o cronograma quando ocorre uma exceção.

ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
this.startMemoryUpdateSchedule(service);//See below method

//Recursive method to handle exception when run schedule task
private void startMemoryUpdateSchedule(ScheduledExecutorService service) {
    ScheduledFuture<?> future = service.scheduleWithFixedDelay(new MemoryUpdateThread(), 1, UPDATE_MEMORY_SCHEDULE, TimeUnit.MINUTES);
    try {
        future.get();
    } catch (ExecutionException e) {
        e.printStackTrace();
        logger.error("Exception thrown for thread",e);
        future.cancel(true);
        this.startMemoryUpdateSchedule(service);
    } catch(Exception e) {
        logger.error("Other exception ",e);
    }
}

questionAnswers(4)

yourAnswerToTheQuestion