time 
设为首页】【收藏本站
当前位置: 主页 > 程序设计 > C\C++\VC > C++基础 > 第1集 初次与异常处理编程相邂逅

第1集 初次与异常处理编程相邂逅

时间:2009-12-04 22:56 点击:1050次 字体:[ ]




  和其它很多程序员一样,本书的主人公阿愚也是在初学C++时,在C++的sample代码中与异常处理的编程方法初次邂逅的,如下:

  // Normal program statements

  ...

  try

  {

  // Execute some code that might throw an exception.

  }

  catch( CException* e )

  {

  // Handle the exception here.

  // "e" contains information about the exception.

  e->Delete();

  }

  // Other normal program statements

  瞧瞧,代码看上去显得那么整齐、干净,try block和catch block遥相呼应,多有对称美呀!因此主人公初次见面后就一见钟情了。

  为什么要选用异常处理的编程方法?

  当然更为重要的是,C++中引入的异常处理的编程机制提供给程序员一种全新的、更好的编程方法和思想。在C++中明确提出trycatch异常处理编程方法的框架之前的年代,程序员是怎样编写程序的,如下:

  void main(int argc, char* argv[])

  {

  if (Call_Func1(in, param out)

  {

  // 函数调用成功,我们正常的处理

  if (Call_Func2(in, param out)

  {

  // 函数调用成功,我们正常的处理

  while(condition)

  {

  //do other job

  if (has error)

  {

  // 函数调用失败,表明程序执行过程中出现一些错误,

  // 因此必须处理错误

  process_error();

  exit();

  }

  //do other job

  }

  }

  else

  {

  // 函数调用失败,表明程序执行过程中出现一些错误,

  // 因此必须处理错误

  process_error();

  exit();

  }

  }

  else

  {

  // 函数调用失败,同样是错误处理

  process_error();

  exit();

  }

  }

  因为程序的执行过程中总会遇到许多可预知或不可预知的错误事件,例如说,由于内存资源有限导致需要分配的内存失败了;或某个目录下本应存在的一个文件找不着了;或说不小心被零除了、内存越界了、数组越界了等等。这些错误事件存在非常大的隐患,因此程序员总需要在程序中不断加入if语句,来判断是否有异常出现,如果有,就必须要及时处理,否则可能带来意想不到的,甚至是灾难性的后果。这样一来,程序可读性差了很多,总是有许多与真正工作无关的代码,而且也给程序员增加了极大的工作负担,多数类似的处理错误的代码模块就像满山的牛屎一样遍地都是(程序员不大多是“牛”人吗?所以。。。哈哈)。

  但C++中的异常处理的机制彻底改变了这种面貌,它使真正的计算处理和错误处理分开来,让程序员不再被这些琐碎的事情所烦扰,能关注于真正的计算处理工作。同时代码的可读性也好了。因此我们有理由选择异常处理的编程方法。具体原因如下:

  1、 把错误处理和真正的工作分开来;

  2、 代码更易组织,更清晰,复杂的工作任务更容易实现;

  3、 毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;

  4、 由于C++中的try catch可以分层嵌套,所以它提供了一种方法使得程序的控制流可以安全的跳转到上层(或者上上层)的错误处理模块中去。(不同于return语句,异常处理的控制流是可以安全地跨越一个或多个函数 )。

  5、 还有一个重要的原因就是,由于目前需要开发的软件产品总是变得越来越复杂、越来越庞大,如果系统中没有一个可靠的异常处理模型,那必定是一件十分糟糕的局面。

  相信绝大多数程序员都知道C++中的异常处理的编程方法,可还是有很多人已习惯原来单纯的面向过程的代码组织方式,不太习惯或较少使用trycatch异常处理。为了使您编写的代码更安全;为了使您编写的代码让他人更易阅读,主人公阿愚强烈建议在您书写的代码中尽可能多用异常处理机制,少一些不必要的if判断语句。

  下一集详细介绍C++中的异常处理的语法。



本文地址 : http://www.fengfly.com/plus/view-159907-1.html
标签: //
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: