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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 747437484 中级黑马   /  2013-11-20 17:53  /  1721 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

finally的作用到底在模块里的实际应用

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
FFF + 1 + 3 同学,你的问题其实可以总要更详细一点的哦.

查看全部评分

10 个回复

倒序浏览
finally语句快用来操作一些必须执行的操作,,

如果你看到IO流那里就会知道,它经常用来关闭资源,例如下:
  1. import java.io.BufferedReader;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;

  6. public class PrintDemo {
  7.         public static void main(String[] args) {
  8.                 BufferedReader br = null;
  9.                 PrintWriter pw = null;
  10.                 try {
  11.                         br = new BufferedReader(new InputStreamReader(System.in));
  12.                         pw = new PrintWriter(new FileWriter("d:\\test\\abc.txt"), true);
  13.                         String line = null;
  14.                         while ((line = br.readLine()) != null) {
  15.                                 pw.println(line.toUpperCase());
  16.                         }

  17.                 } catch (IOException e) {
  18.                         e.printStackTrace();
  19.                 } finally {
  20.                         try {
  21.                                 if (br != null)
  22.                                         br.close();
  23.                         } catch (IOException e) {
  24.                                 e.printStackTrace();
  25.                         } finally {
  26.                                 if (pw != null)
  27.                                         pw.close();

  28.                         }
  29.                 }

  30.         }
  31. }
复制代码
这个例子就是用finally语句快关闭IO的输入输出资源,不论是否发生异常关闭资源都是必须做的;

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
FFF + 1 + 3 虽然解释得有点水~没有说全,但有例子~~+1.

查看全部评分

回复 使用道具 举报
一般用在 数据库的 关闭   因为如果没有finally 这一步  就是意味着有可能 资源 一直在占着    你不关闭别人想用用不上    存在资源的浪费

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 神马都是浮云!水货~~~~木有分分~.

查看全部评分

回复 使用道具 举报
finnally代码块中代码是无论发生什么事都必须执行的。常用作释放资源(电脑的内存资源,不然内存泄露,容易卡死电脑。)  就说,就算有异常,代码给挂了。也必须把该释放的资源给释放了。很多链接的关闭常常用到。因为链接占用着电脑的内存,不释放内存浪费着,浪费多了,就卡了。 像关闭文件流,关闭数据库连接是很常用的,因为都占着电脑内存的。
回复 使用道具 举报
package cn.itcast_04;

/*
* 作为异常处理来说,最标准的格式:
* try{
*                 可能有问题的代码;
* }catch(){
*                 代码的处理方案;
* }finally{
*                 一定会执行的代码;
*                 一般放置的是释放资源的代码。
* }
*
* 学到数据了:
* try{
*                 数据库的连接
*                 数据库的操作
* }catch(){
*                 数据库的异常处理
* }finally{
*                 数据库的关闭
* }
*
* finally比较特殊:里面的代码永远会执行。
* 特殊情况:在执行到finally里面的代码之前,退出了jvm。
*/
public class FinallyDemo {
        public static void main(String[] args) {
                int a = 10;
                int b = 0;
                try {
                        System.out.println(a / b);
                } catch (ArithmeticException e) {
                        e.printStackTrace();
//                        System.exit(0);//退出了jvm
                } finally {
                        System.out.println("haha");
                        System.out.println("hehe");
                }
        }
}
亲,你可以借鉴下!

点评

FFF
有例子,有解说,有注释!妹子~你代码为什么不放代码框里啊???急死我了都!  发表于 2013-11-21 17:51

评分

参与人数 1技术分 +2 黑马币 +3 收起 理由
FFF + 2 + 3 活动技术分额外+1

查看全部评分

回复 使用道具 举报
当我们在程序中需要与文件,与数据库进行操作的时候.这时候finally关键字就是大显身手的时刻了.比如:当打开一个文件后,在程序操作的过程中可能发生了某种异常,这时候程序就会把异常向外抛出,造成程序的中断执行,因此我们已经无法对文件进行关闭.当在try的结束位置加上finally,可以把文件关闭的操作放在finally语句块中.这样无论发生不发生异常,finally中的代码都会被执行,这就避免了文件可能没有被关闭的情况. try { //可能发生异常的代码 }catch(Exception e) { //捕获异常 }finally { //必要的操作,无论异常是否发生,都会被执行 } 尤其是在操作数据库的时候,如果不用finally,那么一旦发生异常,连接就无法关闭,会造成数据库的连接资源耗尽..有请大牛们

点评

FFF
排版不太好,木有例子。但说清楚了!同学,你真的差一点点就有额外技术+1了~真可惜~~~  发表于 2013-11-21 17:53

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
1.当try里面的代码没有异常的时候,会执行该try块对应的finally块,并继续执行finally之后的代码。

2。当try里面的代码出现异常的时候,会执行该try块对应的catch块和finally块,且即使catch中有返回finally也是要执行。也就是先执行完finally中的语句,再返回catch中的return。

3。finally中如果有return的情况,那么即使catch中有return,这个return也不起作用,该方法调用要到finally中的return才返回。
4.在排错中使用finally能够清晰的找到错误的原因。

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
FFF + 1 + 3 虽然很给力,但木有例子。还是木有额外+1.

查看全部评分

回复 使用道具 举报
应该是为了保证资源的节省吧,用在数据库的关闭上,如果程序出现问题 ,有一个finally来关闭数据库是不是相对来说更好一些嘛!就像人要负责任一样嘛!我打开后,用了再关,用不了也是要关的,要不然岂不是浪费了!

点评

FFF
水货~~~只能给你点钱钱了!不然~涛哥会打死我的!  发表于 2013-11-21 17:55

评分

参与人数 1黑马币 +6 收起 理由
FFF + 6

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马