java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗?
2016-12-28 15:51
507 查看
答案:会执行,在return 前执行
执行结果:30
执行结果:40
代码示例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
相关文章推荐
- 面试题之final,finally和finalize的区别以及如果catch里面有return语句,请问finally里面的代码还会执行吗?
- 如果catch里面有return语句,finally里面的代码还会执行吗?
- try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?【Java面试题】
- 程序员面试金典: 9.14 Java 14.2在Java中,若在try-catch-finally的try语句块中插入return语句,finally语句块是否还会执行?
- 0016 Java学习笔记-异常-如果try-catch-finally中都存在return语句会怎样?
- Java - try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?
- Java-try_catch_finally中带有return语句的执行顺序
- Java中try catch finally语句中含有return语句的执行情况(总结版)
- Java面试题-try...finally结构中try中有return那么finally中的语句的执行时间问题
- Java中try catch finally语句中含return语句的执行情况总结-编程陷阱
- Java中try catch finally语句中含return语句的执行情况总结-编程陷阱
- java面试题之try中含return语句时代码的执行顺序详解
- Java中try catch finally语句中含有return语句的执行情况(总结版)
- (转)java 中的try catch finally 语句中含有return语句的执行情况(总结版)
- JAVA基础(30) Java代码finally语句到底是在return之前还是之后执行?
- (转)java 中的try catch finally 语句中含有return语句的执行情况(总结版)
- Java语言里,在try语句块中return,还会继续执行finally语句块中的语句么?
- Java中try catch finally语句中含有return语句的执行情况(总结版)
- Java中try catch finally语句中含有return语句的执行情况
- java基础学习之try catch finally语句中含有return语句的执行情况