0

我想从正在运行的线程中捕获异常并在调用线程中处理它。我将如何以最好的方式?

try {
  Runnable connect = new Runnable() {
    public synchronized void  run() {
      try {
        ... some code requiring long time
      } catch(Exception e) {
        ..I want to catch here and send to calling thread
      }
    }
  }

  synchronized(connect) {
    new Thread(connect).start();
    connect.wait();
    ...if exception then handle it
    ...keep on with code if no exception occurred
  }

} catch(Exception e) {
}
4

1 回答 1

1

最好的办法是不直接使用 Thread ,而是使用Future。如果需要,您可以通过线程运行FutureTask,或者通过将 Callable 提交给 Executor(首选方法)来获取 Future。Future 为您提供了一种方便的方式来等待任务完成并处理结果(常规或异常)。

于 2012-12-10T15:11:23.723 回答