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

Posted ldddd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础之异常——try{}里面有一个return语句,那么紧跟在try后的return语句还会执行吗?什么时候执行,在return前还是后?相关的知识,希望对你有一定的参考价值。

会在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前还是后?的主要内容,如果未能解决你的问题,请参考以下文章

Java面试题总结之Java基础

Java——基础知识(十三)——异常

Java基础之异常

Java异常try里面有return,finally代码会执行吗

Java基础异常处理与输入输出流

黑马程序员——————> 异常处理之修复