码迷,mamicode.com
首页 > 编程语言 > 详细

java基础之异常——try{}里面有一个return语句,那么紧跟在try后的return语句还会执行吗?什么时候执行,在return前还是后?

时间:2019-08-26 15:02:35      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:tac   nal   异常   ack   new   返回   完成   auto   out   

会在return中间执行!

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

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

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

catchtry;

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的内容返回并终止程序;

java基础之异常——try{}里面有一个return语句,那么紧跟在try后的return语句还会执行吗?什么时候执行,在return前还是后?

标签:tac   nal   异常   ack   new   返回   完成   auto   out   

原文地址:https://www.cnblogs.com/ldddd/p/11412290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!