码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的try catch finally

时间:2015-07-21 06:43:16      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

在任何一本Java教材中,异常处理都是作为单独的章节讲解的,足可见其分量。

而真正的能够用好这个知识,只有经历实际项目的开发才会有点体会。

1、try catch finally的执行顺序

(1).一般情况下:try----catch----finally呢

(2).如果try中有return:try----finally----return

(3).如果catch中有return:try----catch ----finally----return

在后两种情况下,reurn会被暂存在栈里面,等到finally执行完再返回。

这种机制保证无论出现什么情况,在try catch过程中finally都被执行一次,特别适合用于释放资源,例如释放数据库链接、释放打开的文件流等

下面看这一段代码,结果t会是神马东东?

public static final String test() {
          String t = "";
          try {
              t = "try";
              return t;
          }
         catch (Exception e) {
              t = "catch";             
              return t;
          }
          finally {
             t = "finally";
     //return t;
         }
     }    

 

上面我们讲到finally之前,return会被暂存到栈里面。上面代码里的t就会暂存起来,等到实际return的时候重新启用,所以上面的代码的正确返回值是"try"。

但是如果我们在finlly字句中添加了return,那么前面try子句中的t值就会被淹没,此时实际的返回值会是"finally"

2、try catch finally结构使用的建议

不建议在finally块中添加return,因为会消化掉try catch中的异常信息,不利于错误的正常处理,合理的return语句的位置:

(1).return语句只在函数最后出现一次。
(2).return语句仅在try和catch里面都出现。
(3).return语句仅在try和函数的最后都出现。
(4).return语句仅在catch和函数的最后都出现。

参考: http://www.cnblogs.com/aigongsi/archive/2012/04/19/2457735.html

Java中的try catch finally

标签:

原文地址:http://www.cnblogs.com/mingziday/p/4614981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!