- public class Test1 {
- private static void foo() {
- try{
- foo();
- }catch(Exception e){
- foo();
- }finally{
- foo();
- }
- }
- }
复制代码 我不明白这样写的目的。楼主是想什么时候执行try中的语句,什么时候执行catch中的语句,什么时候执行finally中的语句吗?
java中写在try中的语句如果遇到了异常。它会在catch中捕获到异常,然后将执行catch中的语句,将异常打印出来,再执行finally 中的语句,楼主在try中写的语句没有遇到异常,所以不会执行catch中的语句,而只会执行finlly中的语句,所以只会打印try和finlly。try和catch中的语句不管出现什么情况,finally中的都会执行,除非你使用了System.exit(0);让虚拟机直接退出。比如说:- public class Test1 {
- private static void foo() {
- try{
- System.out.println("try");
- System.exit(0);
- }catch(Exception e){
- System.out.println("catch");
- }finally{
- System.out.println("finally");
- }
- }
-
- public static void main(String agrsp[]){
- foo();
- }
- }
复制代码 这样就不会执行finally中的语句。楼主现在的代码就是一个递归而没有添加任何判断条件的递归,所以就是一个无限循环 |