免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1556 | 回复: 4
打印 上一主题 下一主题

捕获例外的语句问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-20 09:32 |只看该作者 |倒序浏览
捕获例外的语句是:try.......catch......finally
怎么我看到一程序是没有finally的啊?是不是可以不要finally?如下面这段程序:
  import java.io.*;
  public class NumberInput{
   public static void main(String args[]){
    try{
      InputStreamReader ir;
      BufferedReader in;
      ir=new InputStreamReader(System.in);
      //从键盘接收了一个字符串的输入,并创建了一个字符输入流的对象
      in=new BufferedReader(ir);
      String s=in.readLine();
      //从输入流in中读入一行,并将读取的值赋值给字符串变量s
      System.out.println("Input value is: "+s);
      int i = Integer.parseInt(s);//转换成int型
      i*=2;
      System.out.println("Input value changed after doubled: "+i);
    }catch(IOException e)
    {System.out.println(e);}
   }
  }

论坛徽章:
0
2 [报告]
发表于 2005-06-20 12:38 |只看该作者

捕获例外的语句问题?

可以不要finally
finally是不管如何都会执行。但是这有一个前提。看是否前面的代码会执行System.exit(0);这样的语句,这个语句直接就终止程序了。不会去执行finally中的代码。

论坛徽章:
0
3 [报告]
发表于 2005-06-20 16:10 |只看该作者

捕获例外的语句问题?

从编码角度来说,finally不是必须的,但是要根据实际的应用来决定,比如

  1. Connection con = null;
  2. try{
  3.     //打开数据库
  4.     con = DriverManager.getConnection()
  5.     String sql = "...";
  6.     ....
  7.     //关闭数据库
  8.     con.close();
  9. }catch(SQLException)
  10. {
  11.     //报告错误
  12.     //还是要关闭数据库
  13.     con.close();
  14. }
复制代码

因为你的程序运行中如果发生了Exception以后,程序就跳到Exception段去了,那就错过了原来清理资源(关闭数据库)的代码,所以你不得不再Exception里面再写一遍关闭数据库的代码。有了finally,你可以保证不管你这段代码执行成功否,数据库一定会被关闭,改写如下

  1. Connection con = null;
  2. try{
  3. //打开数据库
  4.     con = DriverManager.getConnection()
  5.     String sql = "...";
  6.     ....
  7. catch(SQLException)
  8. {
  9.     //报告错误
  10. }finally{
  11.     //关闭数据库
  12.     con.close();
  13. }
复制代码


使用finally的好处就是免去你重复写清理资源的代码。

论坛徽章:
0
4 [报告]
发表于 2005-06-20 16:22 |只看该作者

捕获例外的语句问题?

我也觉得是!
finally一般都做释放资源的!

论坛徽章:
0
5 [报告]
发表于 2005-06-20 16:33 |只看该作者

捕获例外的语句问题?

其实加上finally对资源做处理,我想是种很好的编程习惯,因为资源是有限的嘛!另外,有时就是资源没有管理好,在运行起来后找错误常常是事倍功半!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP