作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个类和一个方法
class A {
void foo() throws Exception() {
...
}
}
现在我想为由流传递的每个 A
实例调用 foo,例如:
void bar() throws Exception {
Stream<A> as = ...
as.forEach(a -> a.foo());
}
问题:如何正确处理异常?该代码无法在我的机器上编译,因为我不处理 foo() 可能引发的异常。 bar
的throws Exception
在这里似乎没什么用。这是为什么?
最佳答案
您需要将您的方法调用包装到另一个方法调用中,这样您就不会抛出检查异常。您仍然可以抛出任何 RuntimeException
子类的内容。
正常的包装习惯是这样的:
private void safeFoo(final A a) {
try {
a.foo();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
(父类(super class)型异常Exception
仅用作示例,切勿尝试自己捕获它)
然后您可以使用以下方式调用它:as.forEach(this::safeFoo)
。
关于Java 8 : How do I work with exception throwing methods in streams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56766133/
我是一名优秀的程序员,十分优秀!