ape*_*son 1 java loops try-catch try-catch-finally
基本上遍历列表和
- 第一个对象上的Invoke方法
- 捕获第一个异常(如果有的话); 如果没有更多的例外可以捕获,请正常返回.否则,继续调用方法,直到捕获到所有异常.
- 转到下一个对象.
我可以迭代每个对象,调用方法,并捕获一个异常,但我不知道如何不断调用它上面的方法并继续捕获异常.
这与其他答案类似,但没有旗帜,这对我来说似乎很混乱.我不太明白这个问题,所以我只是把它扔出去,以防它有用.
for (Item item : items) {
while (true) {
try {
item.doSomething();
break;
} catch (MyException ex) {
log.warn("Something failed.", ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法取决于未标记break语句的操作,该语句突然完成,然后while通常退出封闭语句.
基于后续的评论,我认为当声明由方法抛出多个异常时,它有什么意思.
每次调用方法都可以通过抛出一个异常来终止.你不能以某种方式恢复它停止的调用,并处理后续的异常.
因此,如果方法抛出多个异常,请捕获一个共同的祖先,然后继续前进.例如,如果方法抛出java.io.EOFException 或者 java.nio.channels.ClosedChannelException,您可以简单地捕获,java.io.IOException因为它是一个共同的祖先.(你也可以捕获java.lang.Exception或java.lang.Throwable出于同样的原因.)在相同的条件下再次调用该方法将不会让你更进一步.
如果要尝试在每个对象上调用该方法,即使某些对象失败,也请使用:
for (Item item : items) {
try {
item.doSomething();
} catch (Exception ex) { /* This could be any common ancestor. */
log.warn("Something failed.", ex);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3593 次 |
| 最近记录: |