java - .net 中 AggregateException 的 java 等价物是什么?

标签 java .net exception exception-handling

在 .net 中,AggregateException 类允许您抛出包含多个异常的异常。

例如,如果您并行运行多个任务并且其中一些任务因异常而失败,您可能希望抛出 AggregateException。

java有没有等价类?

我想用在的具体情况:

public static void runMultipleThenJoin(Runnable... jobs) {
    final List<Exception> errors = new Vector<Exception>();
    try {
        //create exception-handling thread jobs for each job
        List<Thread> threads = new ArrayList<Thread>();
        for (final Runnable job : jobs)
            threads.add(new Thread(new Runnable() {public void run() {
                try {
                    job.run();
                } catch (Exception ex) {
                    errors.add(ex);
                }
            }}));

        //start all
        for (Thread t : threads)
            t.start();

        //join all
        for (Thread t : threads)
            t.join();            
    } catch (InterruptedException ex) {
        //no way to recover from this situation
        throw new RuntimeException(ex);
    }

    if (errors.size() > 0)
        throw new AggregateException(errors); 
}

最佳答案

Java 7 Throwable.addSuppressed(Throwable)会做类似的事情,尽管它是为稍微不同的目的而构建的(try-with-resource)

关于java - .net 中 AggregateException 的 java 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3374966/

相关文章:

JavaFX:TreeTableView 和扩展没有 child 的项目

java - android studio 上 toast 的按钮点击事件错误

java - 使用java SDK在TFS中将测试用例更新为通过/失败

java - ScheduledExecutorService 生命周期?

c# - 如何在 FirstChanceException 的日志记录中包含实际的表单类名?

c# - 在不丢失类型信息的情况下在 IronPython 中捕获 C# 异常

c# - 如何将 CIDR 子网掩码转换为 HEX 格式?

.net - 在 VB.NET 中使用 VB 6.0 窗体

java - 获得异常后如何继续线程执行

java - 用户定义异常的实现