精华内容
下载资源
问答
  • 1.分析 三个语句中都可以写...如果try{}里面有一个return语句,那么紧跟着这个try后的finally{}里面的代码会不会执行? 一定会执行 2.代码 2.1 finally中写代码,返回的结果有问题 2.2,写返回值可以正常运行 ...

    1.分析

    如果try{}里面有一个return语句,那么紧跟着这个try后的finally{}里面的代码会不会执行?

    一定会执行
    分析:三个语句中都可以写return,但是一般finally中不写return,因为会造成返回结果有问题。

    2.finally中写返回值

    2.1 当finally中写return时,返回的结果有问题(r的结果为finally返回的-1而不是30,此时try里面的返回值被-1覆盖了)

    2.1代码

    public class Demo1 {
        public static void main(String[] args) {
            int r = add(10,20);
            System.out.println(r);
        }
        public static int add(int num1,int num2){
            try{
                int result = num1 + num2;
    //            String name = null;
    //            name.equals("XXX");
                return result;
            }catch (Exception e){
                System.out.println("出现异常:"+ e.getMessage());
                return 0;
            }finally {
                System.out.println("资源释放");
    //            return -1;
            }
        }
    }
    

    2.2运行结果

    资源释放
    30
    

    3.finally中不写返回值

    3.1代码

    public class Demo1 {
        public static void main(String[] args) {
            int r = add(10,20);
            System.out.println(r);
        }
        public static int add(int num1,int num2){
            try{
                int result = num1 + num2;
                String name = null;
                name.equals("XXX");
                return result;
            }catch (Exception e){
                System.out.println("出现异常:"+ e.getMessage());
                return 0;
            }finally {
                System.out.println("资源释放");
                return -1;
            }
        }
    }
    

    3.2运行结果

    出现异常:null
    资源释放
    -1
    
    展开全文
  • try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,但return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上...

    会在return中间执行!

    try 中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,但return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回!但此时会出现两种情况:

    ①、如果finally中也有return,则会直接返回并终止程序,函数栈中的return不会被完成!;

    ②、如果finally中没有return,则在执行完finally中的代码之后,会将函数栈中的try中的return的内容返回并终止程序;

    catch同try;

    package com.test;

    public class Test1 {

    public static void main(String[] args) {

    try {

    System.out.println(new Test1().testname());

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    public String testname() throws Exception {

    String t = "";

    try {

    t = "try";

    System.out.println("try");

    return t;

    } catch (Exception e) {

    // result = "catch";

    t = "catch";

    return t;

    } finally {

    System.out.println("finally");

    // return t = "finally";

    }

    }

    }

    打印结果如下:try

    Finally

    try

    将finally中的注释放开,打印结果如下:

    Try

    Finally

    finally

    结论:finally中的代码肯定会执行,但是会先执行try中的代码,如果try中有return,那么return的东西会先放到函数栈中,然后再执行finally中的代码,

    ①、如果finally中也有return,则会直接返回并终止程序,函数栈中的return不会被完成!;

    ②、如果finally中没有return,则在执行完finally中的代码之后,会将函数栈中的try中的return的内容返回并终止程序;

    展开全文
  • try{}里面有一个return语句,那么紧跟在这个try后的finally{}里的code会在什么时候执行?  答:code会在return方法前执行。

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

          答:code会在return方法前执行。

    展开全文
  • 只要try{}里面没有System.exit(),finally{}里面的code就会执行; package com.test; public class TryAndFinally { public String ff(){ System.out.println("ff()"); return "111"; } pub...

    只要try{}里面没有System.exit(),finally{}里面的code就会执行;

    package com.test;
    
    public class TryAndFinally {
        public String ff(){
            System.out.println("ff()");
            return "111";
        }
        public String hh(){
            try{
                return ff();
            }catch(Exception e){
                System.out.println("e");
            }finally{
                System.out.println("finally");
                return "finally";
            }
        }
        public static void main(String[] args){
            TryAndFinally taf=new TryAndFinally();
            taf.hh();
        }
    }

    执行的结果是:ff()       finally

    他们的执行程序是:先执行ff()方法,然后当遇到try{}里面的return时,程序就自动执行finally{}然后在return。

    所以说finally{}既可以说是在return之前执行也可以说是在执行return的中间执行。

    如果

    package com.test;
    
    public class TryAndFinally {
        public String ff(){
            System.out.println("ff()");
            return "111";
        }
        public String hh(){
            try{
                //return ff();
                System.exit(1);
            }catch(Exception e){
                System.out.println("e");
            }finally{
                System.out.println("finally");
                return "finally";
            }
        }
        public static void main(String[] args){
            TryAndFinally taf=new TryAndFinally();
            taf.hh();
        }
    }

    执行的结果是空,因为执行System.exit()就推出了虚拟机,finally{}不再执行。

     

     

     

     

     

    转载于:https://www.cnblogs.com/xinxinjava/archive/2013/05/05/3061211.html

    展开全文
  • 主函数调用子函数并得到结果的过程,好比主函数准备一个空罐子,当子函数要返回结果时,先把结果放在罐子里,然后再将程序逻辑返回到主函数。所谓哦返回,就是子函数说:我不运行了,你主函数继续运行吧,这没什么...
  • try{}里面有 return 语句,finally 里的代码还会不会执行?正经的知识增加了! 1. 前言 写代码时,我们经常需要对异常进行捕获并处理,并在 finally 代码块内做善后工作,比如关闭流、资源等。 我自己遇到的问题是我...
  • 1、代码 public class Test { public String hello() { ... try { return str; } finally { str = "world"; } } } 2、解释 我们直接来看字节码,如下所示: 0 ldc #2 <hello> 2 astore_1 3 aload_1
  • 除非在try块或者catch块中调用了退出...不过,一般情况下,不要再finally块中使用return或throw等导致方法终止的语句,因为一旦使用,将会导致try块、catch块中的return、throw语句失效。总结一下这小问题:当程序...
  • finally是一定会执行的 只有代码中有system.exit() 这种情况 才不会执行...如果在finally里面有return情况会更复杂 代码如下: 情况: package test; public class Atest { public int test(){ try { Sys
  • 还有便是对于finally语句块无论是否出现异常都会执行,但是当try catch 语句有return的时候对于新手来说肯定一些疑惑,对于我来说里面的指令到底是怎么执行的我也是不是太清楚,但是我基本上可以判断执行结果了...
  • 这是一道面试题,首先finally{}里面的code肯定是会执行的,至于在return前还是后, 看答案说的是在return后执行,我觉得不对,百度了...遂做了一个小测试如下: static void Main(string[] args) { //测...
  • try的括号里面有return一个值,那在哪里执行finally里的代码?  对于try中的return语句,return执行到中间的时候发现finally,则先不返回,而是把值先暂存到本地栈,等finally运行之后再返回,如果finally里...
  • 今天看到技术群里议论这个问题,虽然很少用但是也是一个...2.解释说明:因为第一个finally里面没有return,所以他对return改变不了,try里面return会暂存下来,个缓存区,finally只是改变了i的值没有改变到ret...
  • try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?肯定会执行。finally{}块的代码只有在try{}块中包含遇到System.exit(0);之类的导致Java虚拟机...
  • try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? 肯定会执行。finally{}块的代码只有在try{}块中包含遇到System.exit(0);之类的导致Java虚拟机...
  • try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? --- 看看测试代码: public class TestReturn { public static void main(String[]...
  • (除了两种情况,种是在程序进入try语句块之前就出现异常,会直接结束,不会执行finally块里面的代码。第二种是程序在try语句块中强制退出时也不会去执行finally块里面的代码。)。由于程序执行return就意味着结束...
  • 前段时间去参加了一场面试,面试过程中提到了一个问题,问的是在try{}finally{}语句块中,如果finally里面包含return,并且在try中也同样包含一个return的情况下,程序将如何执行? 当时我的回答是,程序将运行...
  • 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专栏学习【原文winter的...
  • 如果有一个catch{}语句匹配上,其他catch{}分支就不会执行了try{}里面如果有return,也会先执行finally{}里面的语句,之后再return如果try{}和finally{}里面都与return语句,则try{}里面的return不会被执行finally{}...
  • JAVA异常处理一return

    2016-10-25 20:41:15
    我们知道finally块的代码在进入异常处理体系后,里面的代码一定会被执行(除非调用System.exit(0)强制退出程序),那么如果try{}里面有一个return语句,那么紧随其后的finally{}代码会被执行不?reutrn 需要注意些...
  • return研究

    2018-04-11 15:00:00
    public static int f(){ try{ return 1; }finally{ return 2; ...返回2,可能jvm认为一个方法里面有个return语句并没有太大的意义,所以try中的return语句给忽略了,直接起作用的是fi...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 146
精华内容 58
关键字:

try里面有一个return语句