线程池中的异常处理

10 浏览
0 Comments

线程池中的异常处理

我有一个ScheduledThreadPoolExecutor,似乎会吞掉异常。我希望执行器服务在提交的Runnable抛出异常时通知我。

例如,我希望下面的代码至少打印出IndexArrayOutOfBoundsException的堆栈跟踪:

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();
        }
    }
}

0