使用一些遗留代码,并遇到了这个问题:
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();
}
它编译并运行,但我不知道哪个循环在另一个循环中,或者它为什么有效。
答案 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
块打印异常的堆栈跟踪(如果抛出异常,当然)