new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("run");
throw new SomeRandomException();
}
}, 1000, 1000);
Salida: ejecución (excepción es lanzada)Java Timer clase: tareas temporizador de parada para ejecutar si en una de las tareas excepción es lanzada
aquí está el problema: Necesito una tarea temporizador para comprobar específica condiciones en la base de datos (o algo más). Funcionó bien, pero a veces la base de datos (u otra cosa) devuelve algunos errores, se lanza una excepción y el temporizador falla, y luego no se ejecuta ninguna tarea del temporizador nuevamente. ¿Hay alguna implementación del temporizador que continúe funcionando después de que se arroje la excepción en run()
?
que pueda
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);
pero esto parece poco convincente.
Otra alternativa es escribir mi propia implementación de la clase del temporizador, tragando excepciones del método de ejecución (que tampoco parece correcto).
Es necesario coger 'Error's tan bien o que en silencio mata a su tarea también. –