假设我有一个类和一个方法
class A {
void foo() throws Exception() {
...
}
}
现在,我想为A
流所传递的每个实例调用foo :
void bar() throws Exception {
Stream<A> as = ...
as.forEach(a -> a.foo());
}
问题:如何正确处理异常?该代码无法在我的计算机上编译,因为我不处理foo()可能引发的异常。在throws Exception
的bar
似乎是没用在这里。这是为什么?
您需要将方法调用包装到另一个调用中,在该调用中不要引发检查异常。您仍然可以抛出的任何子类RuntimeException
。
普通的包装习惯是这样的:
private void safeFoo(final A a) {
try {
a.foo();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
(超类型的例外Exception
是仅作为例子,切勿尝试自行抓住它)
然后,您可以使用调用它as.forEach(this::safeFoo)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句