3

とを使用ExecutorServiceして並列処理を行っています。の呼び出し時に の例外をキャッチできますが、すべてのcallableによってスローされたすべての例外をキャッチしてから、次のような巨大な複合例外をスローする方法は次のとおりです。FutureCallableCallableFuture#get

ExecutorService service = Executors.newFixedThreadPool(5);
List<Future<Void>> futures = new ArrayList<Future<Void>>();
futures.add(service.submit(new TaskA());
futures.add(service.submit(new TaskB());

for (Future<Void> future : futures) {
    try {
        future.get();
    } catch (Exception e) {
        // ???
    }
}

// throw the big exception here

service.shutdown();
4

2 に答える 2

3

見落としがあるかもしれませんが、

public class CompositeException extends Exception {
    private List<Exception> exceptions = new ArrayList<Exception>();
    public List<Exception> getExceptions() {
        return exceptions;
    }
}

これらの子犬の 1 つをインスタンス化し、スローする前にすべての例外をロードします。

于 2013-11-12T02:35:04.807 に答える