A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© likeermei 中级黑马   /  2013-11-22 00:54  /  1407 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如try中有return会不会执行finally里面的语句
今天看以个面试题里出现过    但是解释的不是很明白,求详解

4 个回复

倒序浏览
就算有return,抛Runtime异常也会执行finally。finally主要就是关资源。这个是一定会执行的。
回复 使用道具 举报
汪洋大海 发表于 2013-11-22 01:05
就算有return,抛Runtime异常也会执行finally。finally主要就是关资源。这个是一定会执行的。 ...

顺序   求顺序的详解
回复 使用道具 举报
  1. public class FinallyDemo2 {
  2. public static void main(String[] args) {

  3. int num = getNumber();
  4. System.out.println(num);
  5. }

  6. private static int getNumber() {
  7. int a = 10;
  8. try {
  9. a = 20;
  10. System.out.println(a / 0);
  11. } catch (ArithmeticException e) {
  12. a = 30;
  13. return a;//看到return后,就会在内存中形成一条返回路径,这个时候的值就是 return 30
  14. //但是,又看到了finally语句,所以就去执行了finally。
  15. //执行完毕finally后,就去把以前的返回路径继续走完。
  16. } finally {
  17. a = 40;
  18. //return a; //这是一条新的返回路径,return后是不能有东西执行的。
  19. }
  20. return a;
  21. }
  22. }你所说的面试题应该是这个!不是的话看看就可以了1
复制代码

点评

还是你懂我 我也做了测试 可是不知到什么原因 return和finally相互矛盾了  发表于 2013-11-22 01:19
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马