new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("run");
throw new SomeRandomException();
}
}, 1000, 1000);
uscita: run (viene generata un'eccezione)Java Timer classe: compiti timer della sosta da eseguire se in uno dei compiti viene generata un'eccezione
qui è il problema: ho bisogno di un compito timer per verificare la presenza di specifiche condizioni nel database (o qualcos'altro). Ha funzionato bene, ma a volte il database (o qualcos'altro) restituisce alcuni errori, viene lanciata un'eccezione e il timer si arresta in modo anomalo e quindi non viene eseguita nuovamente alcuna attività del timer. Esiste un'implementazione di un timer che continua a funzionare dopo che l'eccezione è stata generata in run()
.
posso
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);
ma questo sembra zoppo.
Un'altra alternativa è scrivere la mia implementazione della classe Timer, ingoiando le eccezioni del metodo run (che sembra non essere corretto).
È necessario prendere 'Error's come bene o silenziosamente uccidere il vostro compito pure. –