黑马程序员技术交流社区

标题: return的应用问题?? [打印本页]

作者: 曹思敏    时间: 2013-6-8 11:38
标题: return的应用问题??
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在
return前还是后?



作者: luohan    时间: 2013-6-8 12:34
如果try{}里面的code出现了return 进行返回,那么就不会继续往下执行,也就不会执行到finally{}
作者: 武志红    时间: 2013-6-8 16:21
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";
                }
        }
}
作者: 杨增坤    时间: 2013-6-13 08:12
会背执行的,因为finally{}里面的是属于异常处理的。所以他会在try{}里面执行reurn之前会被先执行额,希望对你有所帮助!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2