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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹思敏 中级黑马   /  2013-6-8 11:38  /  1207 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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


评分

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

查看全部评分

3 个回复

倒序浏览
如果try{}里面的code出现了return 进行返回,那么就不会继续往下执行,也就不会执行到finally{}
回复 使用道具 举报
return 语句是在finally之后进行的,如果try中有return ,那么他并不会马上就返回,而是指导finally结束之后才执行返回。如果finaly里面有新的return 那这个新的return将会覆盖原来的return。需要注意的是,在finally中是不能改变原有的返回值,只能替换原来的return。比如说在try 中有一个返回语句:return str;(假设现在str的值为“ abc”),你在finally中将str赋值为str=“abcd”,并没有重新写返回语句,那么最终返回的值依然是abc。

同样,finally也能覆盖catch中的,return。下面给你一段代码,运行一下你就知道了

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;


public class TestTry {

        public static void main(String...args){
                System.out.println(getString());
        }
        public static String getString(){
                String string ="";
                try{
                        string="abc";
                        File file=new File("/ing.png");
                        InputStream is=new FileInputStream(file);
                        return string;
                }catch (FileNotFoundException e){
                        return "abcd";
                }
                finally{
                        return "abcde";
                }
        }
}

评分

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

查看全部评分

回复 使用道具 举报
会背执行的,因为finally{}里面的是属于异常处理的。所以他会在try{}里面执行reurn之前会被先执行额,希望对你有所帮助!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马