我有一个抛出异常的方法:
public void myMethod(MyBean bean) throws SomeException {
...
}
另一个方法是像这样调用这个方法,没有来自Eclipse的错误/警告:
public void processBeanList(List<MyBean> myBeanList) {
for (int i = 0; i < myBeanList.size(); i++) {
MyBean myBean = myBeanList.get(i);
myMethod(myBean);
}
}
但是,如果我将这个processBeanList
的实现更改为以下内容,我会得到一个“Unhandled exception type SomeException”错误:
public void processBeanList(List<MyBean> myBeanList) {
myBeanList.forEach(myBean -> {
myMethod(myBean); // Eclipse underlines this, mentions error
});
}
我意识到如果方法抛出Exception,那么它应该被处理或重新抛出,但是这两个实现之间是否有我遗漏的东西,这将导致Eclipse在一个情况下显示错误而不是另一个?或者这只是Eclipse,出于某种原因,在第二个示例中拾取,而不是在第一个示例中,当它在两种情况下都应该拾取时?
1条答案
按热度按时间nukf8bse1#
因为forEach(...)的参数是Consumer。
上面是消费者作为lambda函数的实现。
Consumer.accept()
不会抛出异常,因此您必须以某种方式处理它-可能会捕获并作为未检查异常重新抛出。