try和finally中有return时,执行结果总结

finally和try中都有return:

  如果在finally中和try中都包含return语句,将会直接返回finally中return的内容(不管什么数据类型),不 再去执行try中的return语句

public static int nw() { // 最后返回值为20
    int i = 10;
    try {
        return i;
    } finally {
        i = 20 ;
        return i ;
    }
}

try中有return语句finally中没有return

说明:在执行try中的return语句之前会先去执行finally中的代码,再去执行try中的return语句;

   如果try中return返回的是对象,在finally中的代码对try中return的对象修改,return返回的值是修改后的值

public static ArrayList<String> nq() {  // 返回[01, 02]
        ArrayList<String> list = new ArrayList<>();
        try {
            list.add("01");
            return list;
        } finally {
            list.add("02");
        }
    }

 

  如果try中return返回的是基本数据类型,在finally中的代码对try中return的基本数据类型修改,try中return的值不会被改变

public static int nn() { // 最后返回值为10
        int i = 10;
        try {
            return i;
        } finally {
            i = 20;
        }
    }

 

  

posted @ 2021-03-17 16:39  卿安  阅读(328)  评论(0编辑  收藏  举报