黑马程序员技术交流社区

标题: java中try,finally中含有return的执行情况 [打印本页]

作者: 大恶魔先森~    时间: 2014-4-29 22:45
标题: java中try,finally中含有return的执行情况
第一种情况:try中有return语句,而finally中没有
  1. public class TestTry
  2. {  
  3.     static String s="";  
  4.     public static void main(String args[])
  5.     {      
  6.         s = test1();  
  7.         System.out.println("8  "+s);  
  8.     }  
  9.     public static String test1()
  10.     {  
  11.          
  12.         try
  13.        {  
  14.             System.out.println("try.....");  
  15.             return s = "a";  
  16.         }  
  17.         finally{  
  18.             s="b";   
  19.             System.out.println("17  "+s);  
  20.         }  
  21.     }  
  22. }  
  23. 运行结果为:try.....  
  24. 17  b  
  25. 8  a
复制代码

第二种情况:try中没有return语句,finally中有return语句
  1. public class TestTry
  2. {  
  3.     static String s="";  
  4.     public static void main(String args[])
  5.     {     
  6.         s = test1();  
  7.         System.out.println("8  "+s);  
  8.     }  
  9.     public static String test1()
  10.     {  
  11.          
  12.         try
  13.        {  
  14.             
  15.              System.out.println("try.....");  
  16.         }  
  17.         finally
  18.         {  
  19.             s="b";   
  20.             System.out.println("17  "+s);  
  21.         }  
  22.     }  
  23. }  
  24. 运行结果为:try.....
  25. 17  
  26. 8  b
复制代码

第三种情况:try和finally中都有return语句
  1. public class TestTry
  2. {  
  3.     static String s="";  
  4.     public static void main(String args[])
  5.     {  
  6.         s = test1();  
  7.         System.out.println("8  "+s);  
  8.     }  
  9.     public static String test1()
  10.     {  
  11.          
  12.         try
  13.         {  
  14.             System.out.println("try.....");  
  15.             return s = "a";  
  16.         }  
  17.         finally
  18.         {  
  19.             return s="b";     
  20.               
  21.         }  
  22.     }  
  23. }  
  24. 运行结果为:try.....  
  25. 8  b  
复制代码

总结:无论try中有没有return语句,finally语句都一定要执行。当try中有return语句时,finally中没有return时,那么在执行try中return之前先执行finally语句。当finally有return语句时,无论try中有没有return,将会直接返回,不再去执行try中的return语句。
作者: 孟凡超    时间: 2014-4-30 10:29
3q。。。。。。
作者: ._抬眉﹏    时间: 2014-4-30 10:42
不管return在哪里  finally总是会执行的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2