寒舍区区,君勿怪.残音短意,盼与共

<<  < 2008 - 10 >  >>
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31


登录

 
我的分类(专题)

日志更新

最新评论

留言板

链接

搜索


Blog信息
  • 日志:239
  • 评论:319
  • 留言:12
  • 访问:





Exception
阿云 发表于 2005-10-28 17:05:00

  异常是系统内建的机制,可以优雅的处理程序的出错。
  编程时通常有两种代码,一种是业务代码,另一种是错误处理代码。例如在操作文件时要检查文件是否存在,执行sql时数据库是否已打开。在传统的程序,检查处理出错的代码是很烦的,有时候影响到业务代码的阅读,在sun的教材把这些代码称为“意大利面条”风格的代码。下面是一个用伪码操作数据库的例子:
  connection conn = new connection();
  //检查连接是否已经打开
  if(conn.open()==true){
 Statement stmt = conn.createStatement();
 String sql = "select * ....";
 boolean b = stmt.executeSql(sql);
 if(b==true){
  print("succeed.");
 }
 else{
  print("failed of sql exception");
 }
  }
  else{
 print("failed to establish connection");
  }

  用c/vb/c++语言写的代码多数是这样。在一个if语句检查第一个条件,然后在更深的层次里检查第二个条件,然后在更深更深的层次里检查第三个条件……如果可能出错的代码有n层,那么检查就会持续到n层。不利于代码的阅读。

  java提出用一种“优雅”的机制来处理这些类型的检查。这就是异常。所有检查都在第一层进行,就算错误在最内层发生,内建的机制也会让异常在栈里冒泡,直到可以被最外层的代码检查到。用java的例子如下:
  try{
 //1
 connection conn = new connection();
 Statement stmt = conn.createStatement();
 String sql = "select * ....";
 stmt.executeSql(sql);
 //4
  }
  catch(ConnectionException ce){
 print("failed to establish connection" + ce);
  }
  catch(SqlException sqle){
 print("failed when executing sql:" + sqle);
  }

    这样,1,4之间就是纯粹的业务代码。一目了然。
      这就是异常的基础知识。
 


阅读全文 | 回复(0) | 引用通告 | 编辑
背包客,行走江湖,快意人生!点击这里加入。

闲着也是闲着,点击这里访问“ZTM无聊”网站

发表评论:

    大名:
    密码: (游客无须输入密码)
    主页:
    标题:
Powered by Oblog.