在catch语句后返回上一个位置

时间:2011-04-10 00:42:51

标签: java try-catch

我有一段代码在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循环结束之前是否有任何简单的方法可以回到右边,这样它就可以完成迭代其余的元素..

非常感谢!

2 个答案:

答案 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)我不会指望它发挥显着作用。