У меня есть ScheduledThreadPoolExecutor, который, кажется, есть Исключения. Я хочу, чтобы моя служба-исполнитель уведомила меня, если представленный Runnable генерирует исключение.Обработка исключений в ThreadPools
Например, я хотел бы код ниже, чтобы по крайней мере, печать на IndexArrayOutOfBoundsException в StackTrace
threadPool.scheduleAtFixedRate(
new Runnable() {
public void run() {
int[] array = new array[0];
array[42] = 5;
}
},
1000,
1500L,
TimeUnit.MILLISECONDS);
В качестве побочного вопроса. Есть ли способ написать общий блок catch try для ScheduledThreadPoolExecutor?
////////// КОНЕЦ ОРИГИНАЛЬНЫЙ ВОПРОС //////////////
Как было предложено следующее декоратор работает хорошо.
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();
}
}
}
Отличный вопрос. Интересно, почему в этом только мало кто сталкивается. – whiskeysierra
См. Также http://stackoverflow.com/questions/1687977/how-to-properly-catch-runtimeexceptions-from-executors – Raedwald