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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

第一种情况: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语句。

2 个回复

正序浏览
不管return在哪里  finally总是会执行的。
回复 使用道具 举报
3q。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马