A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张向阳 中级黑马   /  2012-12-22 10:27  /  1298 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行,在return前还是后?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

倒序浏览
public class Text5 {
        public static void main(String[] args) {
        //定义一个整型数组
        int [] arr={1,2,3,4,5};
        //调用showElement方法并传递一个大可以导致越界的参数
        int res=show(arr,arr.length);
        //显示得到的返回值
        System.out.println(res);
}

public static int show(int[] arr, int length) {
        int num=1;
        try {
                System.out.println(arr[length]);
        
        }
        catch (Exception e) {//这里应该抛数组角标越界,这里简单处理
                return num;
               
        }
        finally{
                num=2;
                System.out.println("finally执行了!");
        }
        
        return 3;
}
}
通过这个可以证明return是在finally执行后才返回的,且finally无法改变返回值。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
Jam 中级黑马 2012-12-22 19:10:17
藤椅
会执行,好像是道面试题

点评

你回答问题要详细一点。。。  发表于 2012-12-23 09:13
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马