为什么Collections.forEach需要内部try catch?

时间:2019-05-20 08:53:44

标签: java foreach try-catch

试图添加一个forEach循环,但是内部try catch似乎在每个元素上打开/关闭(那很昂贵,对吧?)。因此,我将其移到了范围之外,但是IntelliJ给出了错误,指出不需要外部接球,而内部投掷操作没有接球。

我无法检查forEach的源代码,因为intellij显示.class文件。并且将try catch移入内部效果很好。

//错误代码。给出错误信息,说明.put没有try / catch,并且catch不会抛出任何异常

try {
input.forEach(element->this.outputQ.put(element));
} catch (InterruptedException e1) {          
   e1.printStackTrace();
    this.exit=true;
    }   

//良好代码

input.forEach(element->{
        try {
            this.outputQ.put(element);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            this.exit=true;
        }
    });

//放置在阻塞队列中,因此中断了

是因为forEach没有抛出异常吗?我是否也认为元素明智的尝试捕获代价高昂?(我该怎么做才能避免这种情况)

0 个答案:

没有答案