私はjava.util.concurrentパッケージを初めて使用し、DBからいくつかの行をフェッチする簡単なメソッドを書きました。私は自分のDBコールがそれを処理するための例外をスローすることを確認しました。しかし、私は例外が私に戻って伝播しているのを見ていない。代わりに私のメソッドへの呼び出しはnullを返しています。java concurrent将来のタスクで例外が発生して伝播しない場合はnullを返します
この場合、ある人が私を助けることができますか?ここで私のサンプルメソッド呼び出しです。
private FutureTask<List<ConditionFact>> getConditionFacts(final Member member) throws Exception {
FutureTask<List<ConditionFact>> task = new FutureTask<List<ConditionFact>>(new Callable<List<ConditionFact>>() {
public List<ConditionFact> call() throws Exception {
return saeFactDao.findConditionFactsByMember(member);
}
});
taskExecutor.execute(task);
return task;
}
私はグーグルで調べて、その周りにいくつかのページを見つけました。しかし、それに対する具体的な解決策は見当たらない。専門家....
を助けてくださいのTaskExecutorはFutureTaskは新しいスレッドで実行されると、例外が発生した場合、インスタンスに格納しますorg.springframework.core.task.TaskExecutor
実行-コール周りのtry-catchを入れて:それはあなたが
ExecutionException
内でラップされた例外を取得しますその実行結果を頼むよときにのみです。 –