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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2013-6-6 13:37  /  2175 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是一定会被执行的。
首先你应该明白try catch与finally的关系,如果try里没有异常或者有异常但是被catch捕获到,那么catch后的普通语句是可以正常运行的,如果try里边有异常但是catch块没有捕获到,那么catch后的普通语句是不会执行的,这时候如果有必须要去执行的语句,那么就最好放在finally中执行。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
finally语句只在一种情况下不执行,就是System.exit(0);的时候
显然,楼主的程序中是执行的
回复 使用道具 举报
会被执行到的 这个问题 以前已经有人提问过了 而且据说是张老师的视频里有专门的提出,这个我没考究过,因为我看的也是毕老师的视频
http://bbs.itheima.com/forum.php?mod=viewthread&tid=51412
我觉得这个链接里的这个回答,比较好,通过这段代码测试就一目了然了:
public class TestFinally {
        static int f(){
                int i=1;
                try {
                        System.out.println("try----"+i);
                        return i;
                }
                finally{
                        ++i;
                        System.out.println("finally---"+i);//返回的时候i的值没有变,函数返回后才执行的finally
                        
                }
        }
        public static void main(String[] args){
                System.out.println(f());
        }
}
/*
* try----1
* finally---2
* 1
*/

楼主可以自己看下

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
除非在此之前遇到System.exit(0);否则一定要被执行,所以finally一般用来关闭资源,保证资源不会被随意占用。
回复 使用道具 举报
Java异常处理中的finally语句块是一定会被执行的;除非有一种情况,那就是在try块中或catch块中调用了退出JVM的方法;否则不管在try块、catch块中执行怎样的代码,出现什么样的情况,异常处理的finally块总是被执行。在实际应用中finally经常被用作回收资源用,这里所说的资源一般指物理资源,像数据库连接、网路连接,磁盘文件等;还有点要提醒你的是Java的垃圾回收机制不会回收任何的物理资源,垃圾回收只回收对内存中的对象所占用的资源!

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
try中的和finally中的都会执行  只不过返回的是try中的数据罢了。但如果finally中的是return++x呢     这样的情况就会覆盖掉try中的数据   你可以写一个输出语句来验证的

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
请楼主注册后在发帖,注册最好写真实的姓名,谢谢合作
回复 使用道具 举报
肯定会被执行,因为一异常处理时,try catch finally,其中finally是一定会被执行的代码部分,除非遇到System.ext(0)这种情况,虚拟机会停止运行,才不会被执行!
回复 使用道具 举报
但是对于你这个题目而言,结果是1,因为再运行++x的时候已经返回了,这时候x的值为2,但是输出的还是刚才的1。
回复 使用道具 举报
当然可以被执行到的,因为你try(需要处理的异常代码),因为你没有异常,所以finlly是必须要执行的
回复 使用道具 举报
匿名黑马伤不起
回复 使用道具 举报
楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。{:soso_e102:}
回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马