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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李会启 中级黑马   /  2012-3-9 17:52  /  1867 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在什么情况下要使用fianlly呢。

5 个回复

倒序浏览
无论try中执行结果怎样,都必须要执行的语句就放在finally中,在关闭资源的时候用的比较多
回复 使用道具 举报
使用 finally 关键字来避免资源漏洞
finally 块确保 close 方法总被执行,而不管 try 块内是否发出异常。因此,可以确保在退出该方法之前总会调用 close 方法。这样您就可以确信套接字被关闭并且您没有泄漏资源。在此方法中不需要再有一个 catch 块。在第一个示例中提供 catch 块只是为了关闭套接字,现在这是通过 finally 关闭的。如果您确实提供了一个 catch 块,则 finally 块中的代码在 catch 块完成以后执行。

finally 块必须与 try 或 try/catch 块配合使用。此外,不可能退出 try 块而不执行其 finally 块。如果 finally 块存在,则它总会执行。(无论从那点看,这个陈述都是正确的。有一种方法可以退出 try 块而不执行 finally 块。如果代码在 try 内部执行一条 System.exit(0); 语句,则应用程序终止而不会执行 finally 执行。另一方面,如果您在 try 块执行期间拨掉电源,finally 也不会执行。)

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1 赞一个!

查看全部评分

回复 使用道具 举报
finally是异常处理中必须执行的代码块
回复 使用道具 举报
finally用在不论是否发生异常,也不论发生任何异常,你都要执行某个操作时使用。比如资源的释放:
Java code
SomeResource res = allocateMyResource(); // 申请得到某个资源
try {
  Object result = res.doSomething(); // 利用资源做某些操作,可能发生异常
  return result; // 返回结果
}
catch (SomeException ex) {
  // 处理异常
}
finally {
  releaseMyResource(res); // 无论是否发生异常,资源都应该被释放
}

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
finally中放一些必须执行的代码。一般在数据库方面应用比较常见。
当访问数据库遇到异常,代码的执行顺序就会被打乱,抛出异常后面的异常就可能执行不到。
这个时候我们必须用finally将数据库关闭,释放资源。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马