呼び出し可能な実行中の例外
-
29-10-2019 - |
質問
私は次の呼び出し可能なものを持っています:
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
所属していません StackOverflow