for - 尝试组合循环?

时间:2015-03-02 21:07:09

标签: java for-loop try-catch

使用一些遗留代码,并遇到了这个问题:

    File file = new File()
    File[] files = file.listFiles();
    for(int i=0;i<files.length;i++)
        try {
            {
                System.out.println("Do stuff");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

它编译并运行,但我不知道哪个循环在另一个循环中,或者它为什么有效。

2 个答案:

答案 0 :(得分:2)

此代码

    File file = new File();
    File[] files = file.listFiles();
    for (int i = 0; i < files.length; i++) 
        try {
            {
                System.out.println("Do stuff");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

与此相同

    File file = new File();
    File[] files = file.listFiles();
    for (int i = 0; i < files.length; i++) {
        try {
            {
                System.out.println("Do stuff");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

与此相同

    File file = new File();
    File[] files = file.listFiles();
    for (int i = 0; i < files.length; i++) {
        try {
            System.out.println("Do stuff");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Java允许你有一些&#34;额外的&#34;括号,但它不会改变任何东西(如果在其中声明变量,它会改变变量的范围,但事实并非如此)

答案 1 :(得分:1)

try-catch不是循环,它只是一个执行try块(一次)和可能catch块的构造。< / p>

如果你将其分解,请查看以下内容:

  • 表示i数组中的每个索引files
    • 做一件事,try-catch
      • try块本身有一个"anonymous block"(由try内的curlies创建的块 - 它从单词try后面的第二个大括号开始)
        • 匿名块有一个语句System.out.println("Do stuff");
      • catch块打印异常的堆栈跟踪(如果抛出异常,当然)