java--用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?

原创 2015年07月09日 14:05:03

/*
* 思路: 
* 要想证明程序的运行流程,那么就可以使用myeclipse中加入断电,然后debug单步执行,那么怎么在代码中实现呢,也就说怎么使用代码来证明呢? 
  * return是在finally执行后才返回的,且finally无法改变返回值
*/
package com.itheima;

public class Test5 {

 /**
  * 5、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly? 
  * @param args
  */
  public static void main(String[] args) throws Exception {   
          System.out.println("第一种:"+tryTest1());  
          System.out.println("第二种:"+tryTest2());  
          System.out.println("第三种:"+tryTest3());  
      }  
      //第一种方法,首先想到了利用数字来解决问题。想了想还是不能判断到底是先执行return还是先执行fianlly,只能来知道finally不能修改返回的值。   
      public static int tryTest1(){  
          int x = 0;  
          try {   
              x = 1;  
              System.out.print("try中的x值为:"+x+"----");  
              return x;  
         } catch (Exception e) {  
               // 处理异常   
          }finally{  
               x = 2;  
              System.out.print("finally中x值为:"+x+"----");  
          }  
           return 0;  
     }  
      //第二种方法,想了想就使用StringBuilder来试着解决一下问题。在finally里面加入return。   
       public static String tryTest2()  {  
           String x = "try*****";  
           StringBuilder sb = new StringBuilder();  
           try {  
              System.out.print("try1-----");  
              System.out.print("try2-----");  
              sb.append(x);  
               return sb.toString();  
         } finally {  
              sb.append("finally");  
              System.out.print("finally3");  
               //最后加入return   
               return sb.toString();  
           }  
      }  
     //第三种方法,finally里面没有家人return。   
       public static String tryTest3() {  
           String x = "try*****";  
           StringBuilder sb = new StringBuilder();  
          try {  
               System.out.print("try1-----");  
               System.out.print("try2-----");  
              sb.append(x);  
              return sb.toString();  
         } finally {  
              sb.append("finally");  
              System.out.print("finally3");  
               //最后加入return   
               //return sb.toString();   
           }  
      }  
    
   } 


在try中写了return,后面又写了finally,是先执行return还是先执行fianlly

在java的学习中,关于异常的处理是很重要的一环,笔者最近在学习这一方面的知识时就遇到了一个问题:就是在try语句块中写了return,但后面又写了finally语句,那么程序到底是先执行return...
  • u014697083
  • u014697083
  • 2014年04月13日 23:32
  • 1828

return与finally到底谁先执行?

关于return与finally的强弱关系的解释。其中返回值的一些注意事项
  • zoujian1993
  • zoujian1993
  • 2015年04月29日 10:11
  • 1025

关于try,finally里面的return,到底谁先执行的问题

在JAVA语言的异常处理中,finally里面代码块是为了保证无论出现了什么样的情况,finally里的代码一定会被执行。但是return 的意思就是结束当前函数的调用并跳出这个函数,因此finall...
  • java19950529
  • java19950529
  • 2016年07月27日 11:49
  • 2606

finally语句到底是在return之前还是之后执行?

参考:http://blog.csdn.net/kavensu/article/details/8067850代码示例:http://www.cnblogs.com/lanxuezaipiao/p/3...
  • xx326664162
  • xx326664162
  • 2015年12月11日 18:37
  • 3719

java基础-用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?

/*思路: * 要想证明程序的运行流程,那么就可以使用myeclipse中加入断电,然后debug单步执行,那么怎么在代码中实现呢,也就说怎么使用代码来证明呢? * return是在finally...
  • zxloveooo
  • zxloveooo
  • 2013年09月02日 13:21
  • 1328

【Java】try中有return,finally块执行问题

对于如下的一段程序: package try_catch_finally_return; public class TCFRtest { private static void Test1(){...
  • yongh701
  • yongh701
  • 2015年11月26日 17:03
  • 2709

Java finally语句到底是在return之前还是之后执行?---第一篇

当return遇到finally 看过网上关于Java中异常捕获机制try…catch…finally块中的finally语句是不是一定会被执行的讨论也有很多。首先明确一点,下面两种情况finally...
  • loongshawn
  • loongshawn
  • 2016年01月09日 21:43
  • 1097

try-catch语句中return和finally执行顺序详解

刷java面试题偶然看到这类问题(try/finally中含有return时的执行顺序),觉得挺有意思于是小小的研究了一下,希望经过我添油加醋天马行空之后,能给你带来一定的帮助 原题 try {...
  • zhoushumin157016
  • zhoushumin157016
  • 2017年06月15日 09:29
  • 670

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

try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? 肯定会执行。finally{}块的代码只有在try...
  • CWH615
  • CWH615
  • 2016年10月28日 11:00
  • 2176

面试题之final,finally和finalize的区别以及如果catch里面有return语句,请问finally里面的代码还会执行吗?

/*  * 面试题:  * 1:final,finally和finalize的区别  * final:最终的意思,可以修饰类,成员变量,成员方法  *         修饰类,类不能被继承  *   ...
  • u012110719
  • u012110719
  • 2015年05月31日 09:44
  • 1247
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java--用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
举报原因:
原因补充:

(最多只允许输入30个字)