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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bfl625 中级黑马   /  2014-9-2 21:08  /  1944 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args) {
                int num = getNum();
                System.out.println(num);
        }
public static int getNum() {
                int x = 10;
                try {
                        System.out.println(1/0);
                        return x;
                } catch (Exception e) {
                        x = 20;
                        return x;                                                        //当程序执行到了return语句会有一个返回路径
                }finally {                                                                //但是在完全return之前会看有没有finally如果有
                                                                                                //先执行finally,再把return返回路径的值返回
                        x = 30;
                        System.out.println("finally执行了吗");
                        //return x;
                }
        }

14 个回复

正序浏览
20 ,在try里执行出现异常时跳进catch,try里面异常下面的return执行不到.catch里面x赋值为20 并且return加载进内存,这时加载进内存的x是20,然后进入finally x被赋值为30 然后结束,但是返回的还是内存里的20.如果finally里面有return语句则覆盖catch里面的return变成30.
回复 使用道具 举报
关于这种题目还真是层出不穷啊,  受教了
回复 使用道具 举报
finally执行了吗
20
回复 使用道具 举报
懂了,,谢谢
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
东子-7'C 发表于 2014-9-3 12:05
一般finally里放的都是关闭资源的代码,为什么你的没有呢

这是个面试题,没有使用资源,重点是考察finally的使用!
回复 使用道具 举报

不是的,是20.
回复 使用道具 举报
finally执行了吗?
30
回复 使用道具 举报
一般finally里放的都是关闭资源的代码,为什么你的没有呢
回复 使用道具 举报
finally里面return把try catch里面的return给覆盖了
回复 使用道具 举报
java 0803和你有什么关系
回复 使用道具 举报
进击的大鹏 发表于 2014-9-2 23:25
还没学到,请问 try, catch finally是关键字吗?都是什么意思。

这是异常那部分的知识!try里面放有可能出现异常的代码;catch对异常做出处理;finally里面放的是一定会执行的代码,一般用于释放资源!
回复 使用道具 举报
还没学到,请问 try, catch finally是关键字吗?都是什么意思。
回复 使用道具 举报
抓住一只妹子!!!!!!!!!!!!!!!还是一只基佬???????????
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马