黑马程序员技术交流社区

标题: finally问题 [打印本页]

作者: 李会启    时间: 2012-3-9 17:52
标题: finally问题
在什么情况下要使用fianlly呢。
作者: 杨毅    时间: 2012-3-9 17:58
无论try中执行结果怎样,都必须要执行的语句就放在finally中,在关闭资源的时候用的比较多
作者: 程小龙    时间: 2012-3-9 17:59
使用 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 也不会执行。)


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


作者: 王杰    时间: 2012-3-9 20:50
finally中放一些必须执行的代码。一般在数据库方面应用比较常见。
当访问数据库遇到异常,代码的执行顺序就会被打乱,抛出异常后面的异常就可能执行不到。
这个时候我们必须用finally将数据库关闭,释放资源。




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