线程池中的异常处理
2022-09-01 01:37:26
我有一个 ScheduledThreadPoolExecutor,它似乎正在吃异常。我希望我的执行器服务在提交的 Runnable 引发异常时通知我。
例如,我希望下面的代码至少打印IndexArrayOutOfBoundsException的stackTrace。
threadPool.scheduleAtFixedRate(
new Runnable() {
public void run() {
int[] array = new array[0];
array[42] = 5;
}
},
1000,
1500L,
TimeUnit.MILLISECONDS);
作为题外话。有没有办法为 ScheduledThreadPoolExecutor 编写一个通用的 try catch 块?
原始问题结束 //////////
正如建议的那样,以下装饰器工作得很好。
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();
}
}
}