来自图书馆的方法正在吞噬我想要抓住的异常

时间:2015-06-20 17:42:29

标签: java exception exception-handling

我使用的是FutureTask类,它在构造函数中接受一个Callable对象,并从他的run方法中调用call(),如下所示:

public void run() { //Thread
    while(true) {
        try {
            FutureTask<String> task = taskQueue.take();
            task.run(); //executing call() somehow
        } 
        catch (InterruptedException e) {
            System.out.println("Thread finishing from interrupt()...");
            break; //I would like to break the loop if I receive the exception
        }
    }
}

我的通话实现是这样的:

@Override
public String call() throws InterruptedException {
  Thread.sleep(taskTime);
  //After calling interrupt() on this thread an InterruptedException is thrown
  return "someString"; // this is not reached
}

但我认为run方法正在吞噬异常,因为我无法访问catch块。你有什么想法吗?

我调用thread.interrupt();,线程是运行run()的线程。

要清除:当task.run()正在运行时,它正在执行Thread.sleep(taskTime);,它会正确抛出异常,但run()方法似乎吞下它。

问题是:我有一个库类(我无法修改),它使一个对象运行一个可能引发异常的特定方法。这个库类就像一个包装器,它似乎吞下了异常而不是传播它。你会做什么?

0 个答案:

没有答案