質問

私は次の呼び出し可能なものを持っています:

public class Worker implements Callable<Boolean>{

   @Override
   public Boolean call(){
      boolean success=true;

      //do Something
     return success;
   }

}

今、私はそれを実行しています:

Worker worker - new Worker();
Future<Boolean> submit = executor.submit(worker);

コードのどこかで実行されるように、いくつかの操作を実行するために、Hashmapの一種で送信を保存しています。

で例外が発生したかどうかをどうすればわかりますか worker.call() 関数?

意思 submit.isCancelled() ある種の例外が発生した場合はtrueを返し、すべてが正常に機能した場合にfalse?

役に立ちましたか?

解決

あなたが電話するとき Future.get() それはあなたの例外を包みました ExecutionException.

他のヒント

で述べられているように ドキュメンテーション, Future<V> 中に発生した例外を再投与します .call() (andに包まれていますが ExecutionException)、 と isCancelled() この場合、まだ間違っているでしょう。

グアバ図書館, 、があります FutureCallback a onFailure(Throwable t) 興味がある方法

Google Guava Librairiesをプロジェクトに追加することは決してスペースの無駄ではありません:-)

submit.get() 投げます ExecutionException

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top