下面两个小程序,只有一句不一样,为何一个正常,而另一个却是无限循环呢?
----------------------------------------------程序1-------------------------------------------------------------------------
public class TestException {
public static void main(String args[]) {
int i = 0;
String greetings[] = { " Hello world !", " Hello World !! ",
" HELLO WORLD !!!" };
while (i < 4) {
try {
// 特别注意循环控制变量i的设计,避免造成无限循环
System.out.println(greetings[i++]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组下标越界异常");
} finally {
//i++;
System.out.println(i);
System.out.println("--------------------------");
}
}
}
}
--------------------------------------------------程序2---------------------------------------------------------------------
public class TestException {
public static void main(String args[]) {
int i = 0;
String greetings[] = { " Hello world !", " Hello World !! ",
" HELLO WORLD !!!" };
while (i < 4) {
try {
// 特别注意循环控制变量i的设计,避免造成无限循环
System.out.println(greetings[i]);
i++;
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组下标越界异常");
} finally {
//i++;
System.out.println(i);
System.out.println("--------------------------");
}
}
}
}
说的很有道理
我猜测:异常抛出机制可能要等到该语句System.out.println(greetings[i++]);里面的多个操作都(尝试)执行了再抛出,高手觉得呢?