Ho un programma ScheduledThreadPoolExecutor che sembra mangiare eccezioni. Voglio che il mio servizio esecutore mi informi se un Runnable inviato genera un'eccezione.Gestione delle eccezioni in ThreadPools
Per esempio, mi piacerebbe il codice sottostante per lo meno di stampa del IndexArrayOutOfBoundsException stackTrace
threadPool.scheduleAtFixedRate(
new Runnable() {
public void run() {
int[] array = new array[0];
array[42] = 5;
}
},
1000,
1500L,
TimeUnit.MILLISECONDS);
Come una domanda lato. C'è un modo per scrivere un blocco catch try generale per ScheduledThreadPoolExecutor?
////////// FINE domanda iniziale //////////////
Come suggerito il seguente Decorator funziona bene.
public class CatcherTask implements Runnable{
Runnable runMe;
public CatcherTask(Runnable runMe) {
this.runMe = runMe;
}
public void run() {
try {
runMe.run();
} catch (Exception ex){
ex.printStackTrace();
}
}
}
Ottima domanda. Mi chiedo perché solo poche persone si imbattono in questo. – whiskeysierra
Vedere anche http://stackoverflow.com/questions/1687977/how-to-properly-catch-runtimeexceptions-from-executors – Raedwald