快速业务通道

掌握C++ builder的除错艺术(1)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30

第一篇-正确书写代码

1.简介

2.书写干净的代码

3.使用异常及异常处理能力

4.使用记录(logging)机制

5.结合使用记录机制与类的异常处理机制

6.处理您代码外产生的异常

7.你的回合

8.版权说明

简介

这篇文章,我将从最基本的开始谈起。但希望可以涉及更广的层面,而不仅仅是为你的程序除错(debug)。你将会看到,我认为除错(debugging)这个字的全部意义,并不只是通过ide的内建机制来运行的。我希望在这篇小小的文章结束时,几乎每个读者都可以学到至少是一件新东西,并把它藏到你的兵器库中。记住,你程序中的错误(bug)越少,你的最终用户对你的程序的感觉就越好;你对错误(bug)的处理越好,用户们发现错误(bug)时就越乐于告诉你以便你改正错误。好了,现在系好安全带,戴上护目镜,让我们开始一段疯狂的路程!

书写干净的代码

首先而且也许是最重要的一点是书写干净、可读的代码是极其重要的。能够在写完一段代码后回顾一下并给它加上注释来说明这段代码用来做什么和为什么这么做,将会省去你以后跟踪代码的无数个痛苦的小时。也许你会多花一点时间来书写,但当你花过n小时来跟踪那些难以捉摸的bug时,你就会同意多花点时间来让程序代码可读是多么值得了。(你本可以很容易完成除错的)。如果没有这么做过,我建议你停下来,读读另一篇scott的精彩文章-代码的风格(大家需要的话,将会尽快翻译)。

使用异常及异常处理能力

现在进入下一步,这仍然是基于代码的步骤。(除了在极少数的情况下,你不能老是使用系统内建的除错器,所以知道其他可以找出这些麻烦的虫子的办法总是个好主意)。本步骤完全是关于如何做到,更重要的是处理好在你的窗体出现异常时系统扔给你的(产生的)错误。在c++标准得到认可前黑暗的旧日子里,应用程序通常会通过返回值来发出错误信号(这种方法在ole和一些winapi函数中仍在使用)。很显然,你可以很轻易的忽略这些(事实上也是经常的,我的意思是你经常检查一个winapi函数的返回值吗?)。

所以他们决定….,okay,我们需要一个新的机制,一个你不能忽略的。但你可以处理,定制(自定义 customize)。异常就此出现了。想要一个特殊的错误类型标志?容易的很,定义一个新的异常类型(不过是一个类,没别的),抛出来(产生这个异常)。完了。

例子:

class myexception
{
public:
         ansistring imessage;
         myexception(ansistring message) { imessage=message;}
};

throw new myexception(“test exception message”);

就这么简单!(当然不是很完全,我会很快加上的)。漂亮而又简单,并且非常容易定制来满足您的需要。okey,你会问到:“我能产生异常了,但如何处理它们?我的意思是,我想在第一时间(位置)从我的代码中排除异常!”这当然很容易做到,实际上还很容易定制呢!标准委员会为我们定义了try {/* code */ }机制,跟异常机制一样,它完全可以定制来满足您的需要!只需把您的执行代码段放在try模块中就行了,您还需要一个catch( ) 或 __finally 模块来告诉程序(如果)得到一个异常的时候作什么。现在就是你这么做的好处,你定义了一个类class类型并且输入变量来捕捉异常-通过声明catch( )。(在前面的例子中,应该是这样-catch(myexception &e) { /*在这里书写捕捉到异常后的处理代码*/})为了让这个系统更有力,你可以建立完整的子类继承树。这样当你捕捉基类时你可以捕捉所有从这个基类继承的异常类型(vcl中一个很好的例子就是所有的异常都是从exception类继承而来的,所以catch(exception& e) 将捕捉所有的vcl异常,当然包也括您所产生的。但esocketerror除外,见xiphias在http://www.bytamin-c.com/ 的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号