for - 尝试组合循环?
for - try combined loop?
使用一些遗留代码,遇到了这个:
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();
}
它可以编译并运行,但我不知道哪个循环在另一个循环中,也不知道它为什么起作用。
try-catch
不是一个循环,它只是一个执行 try
块(一次)和可能的 catch
块的结构。
如果你把它分解,这就是发生的事情:
- 对于
files
数组中的每个索引 i
- 做一件事,一个
try-catch
try
块本身有一个 "anonymous block"(由 try
内的花括号创建的块——它从单词 [=11= 之后的第二个大括号开始])
- 匿名块有一个语句,
System.out.println("Do stuff");
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();
}
和这个一样
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 允许你有一些 "extra" 括号,但它不会改变任何东西(如果你在其中声明变量,它会改变变量的范围,但事实并非如此)
使用一些遗留代码,遇到了这个:
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();
}
它可以编译并运行,但我不知道哪个循环在另一个循环中,也不知道它为什么起作用。
try-catch
不是一个循环,它只是一个执行 try
块(一次)和可能的 catch
块的结构。
如果你把它分解,这就是发生的事情:
- 对于
files
数组中的每个索引i
- 做一件事,一个
try-catch
try
块本身有一个 "anonymous block"(由try
内的花括号创建的块——它从单词 [=11= 之后的第二个大括号开始])- 匿名块有一个语句,
System.out.println("Do stuff");
- 匿名块有一个语句,
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();
}
和这个一样
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 允许你有一些 "extra" 括号,但它不会改变任何东西(如果你在其中声明变量,它会改变变量的范围,但事实并非如此)