java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗?

Posted 大数据小小罗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗?相关的知识,希望对你有一定的参考价值。

答案:会执行,在return 前执行

代码示例1:


/*
 * java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗?
 */
public class FinallyDemo2 
    public static void main(String[] args) 
        System.out.println(getInt());
    

    public static int getInt() 
        int a = 10;
        try 
            System.out.println(a / 0);
            a = 20;
         catch (ArithmeticException e) 
            a = 30;
            return a;
            /*
             * return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
             * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
             */
         finally 
            a = 40;
        

//      return a;
    

执行结果:30

代码示例2:

package com.java_02;

/*
 * java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗?
 */
public class FinallyDemo2 
    public static void main(String[] args) 
        System.out.println(getInt());
    

    public static int getInt() 
        int a = 10;
        try 
            System.out.println(a / 0);
            a = 20;
         catch (ArithmeticException e) 
            a = 30;
            return a;
            /*
             * return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了
             * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30
             */
         finally 
            a = 40;
            return a; //如果这样,就又重新形成了一条返回路径,由于只能通过1个return返回,所以这里直接返回40
        

//      return a;
    

执行结果:40

以上是关于java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java基础面试题有哪些?

Java面试题22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

JAVA面试题-阿辉try catch finally , try 里有 return , finally 还执行么?

JAVA面试题-阿辉try catch finally , try 里有 return , finally 还执行么?

JAVA面试题-阿辉try catch finally , try 里有 return , finally 还执行么?

Java异常面试题(含答案)