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面试题22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
JAVA面试题-阿辉try catch finally , try 里有 return , finally 还执行么?
JAVA面试题-阿辉try catch finally , try 里有 return , finally 还执行么?