我有一段代码在try语句中有一个循环。抛出并捕获异常时,循环被中断,并且执行继续进行。在catch块完成后,如何让执行继续执行其余的循环?
以下是我的代码片段:
private ArrayList<URL> download(final InputStream in, URL url, int maxDepth) throws IOException {
try {
...
for (final URL link : links) {
//if exception is caught, loop will be broken here.........
download(link.openStream(), link, maxDepth - 1);
}
return alLinks;
} catch (final IOException e) {
// Display an error if anything fails.
this.searchResults.append(e.getMessage());
return null;
}
}
我想知道在for循环结束之前是否有任何简单的方法可以回到右边,这样它就可以完成迭代其余的元素..
非常感谢!
答案 0 :(得分:8)
将try-catch
块移动到for循环中。
private ArrayList<URL> download(final InputStream in, URL url, int maxDepth) throws IOException {
...
for (final URL link : links) {
//if exception is caught, loop will be broken here.........
try{
download(link.openStream(), link, maxDepth - 1);
}
catch (final IOException e) {
// Display an error if anything fails.
this.searchResults.append(e.getMessage());
}
}
return alLinks;
}
答案 1 :(得分:2)
只需将try
块放在循环中:
for (...) {
try {
...
}
catch (...) {
...
}
}
我不确定这是否会影响运行时或类似的东西,但只要实际抛出异常的情况很少(也就是“例外”:-P)我不会指望它发挥显着作用。