public class TestChar {
private static void foo() {
try {
System.out.println("try");
foo();
} catch (Throwable e) {
System.out.println("catch");
foo();
} finally {
System.out.println("finally");
foo();
}
}
public static void main(String[] args) {
foo();
}
}
输出结果是n个try+2个finally不断循环,n的范围一般是2~5不懂,求解
private static void foo() {
try {
System.out.println("try");
foo();
} catch (Throwable e) {
System.out.println("catch");
foo();
} finally {
System.out.println("finally");
foo();
}
}
public static void main(String[] args) {
foo();
}
}
输出结果是n个try+2个finally不断循环,n的范围一般是2~5不懂,求解
try catch finally 的执行顺序吗?
你这例子递归啦!
首先你应该明白try catch与finally的关系,如果try里没有异常或者有异常但是被catch捕获到,那么catch后的普通语句是可以正常运行的,如果try里边有异常但是catch块没有捕获到,那么catch后的普通语句是不会执行的,这时候如果有必须要去执行的语句,那么执行finally后语句。
不过输出类似于这样,finally被执行两次,还是有点不解
try
try
tryfinallyfinally
tryfinallyfinally
try
tryfinallyfinally
tryfinallyfinally
try
try
tryfinallyfinally
tryfinallyfinally
try
tryfinallyfinally
tryfinallyfinally
try
try
A.执行一段时间后报栈溢出。
B.会一直输出“try”。
C.会一直输出“try”和“finally”。
D.会一直输出“try”、“catch”和“finally”