将记录和异常处理结合使用
你不用总是担心可能会发生什么偶然的异常。一般来说,通过很多的bugs测试后(尽量折磨程序,看看它会不会崩溃),应用程序在运行是应该不会出现什么错误。下面的这个技术,建议组件开发者,在第一次把组件放在IDE环境测试的时候,很应该遵守。
一个在IDE中产生的异常会导致很多问题,甚至可能无法重新启动IDE也不能恢复。这个技术很简单。在代码中每一个函数或是主要的函数中加入: try
{
//函数的代码
}
catch(Exception &E)
{
SendDebugMessage(“Exception caught in classname::functionname of type:” +E.ClassName()
+” with the message:”+E.Message);
};
(把字符串中classname 和 functionname 替换成相应的类名和函数名。在出现错误时,你会立刻知道错误发生的位置。这样也就不至于强制重起IDE的了。
现在,让我们看看前面的内容, ClassName()给了我们什么样的帮助呢?它只是用于返回字符串“Exception”吗?每一次,E都被声明为异常类型?这是VCL另一个优秀的地方,所有的类都从TObject继承,所以,这些类都能自动获得正确的类型和基类的类型,所有的更多的信息都可以在这里找到。(请参见TObject的帮助)所以,尽管我们使用了Exception &E,其中的E.ClassName()将返回捕获到的产生异常的实际类名。得到这些好处需要付出的代价是编译出来的可执行文件变大了一些。所有的Delphi/CBuilder用户都注意到了这一点,但是他们说,没有付出就没有收获。在http://www.bytamin-c.com/的howto栏目可以看到Xiphias的一系列文章。其中,他提到了使用TStringList作记录的方法:先将错误通过TStringList的Add方法加入到StringList里面,然后使用SaveToFile保存到硬盘上。不过要注意在程序结束的时候不要忘记使用SaveToFile()方法把TStringList保存起来。或者,也可以每次捕捉到异常之后都保存一次。
在代码外部进行异常处理
这是使用代码处理异常的最后一节,以后,我们将使用IDE的调试工具。但是,这节中讲到的方法在处理致命错误时是很重要的。比如说:可以显示一个包含了错误信息的对话框,这样,用户报告bugs的时候会清除的多。你肯定不想听到用户报告说:“啊,这有个对话框,上面写着什么地址发生了错误”。有个好办法能改善这种状况,请往下面看。
收藏地址:http://www.qqread.com/bcb/f354375.html相关专题
- C/C++技术专题 (1640篇文章)
- 数字小键盘指法练习 (5501次浏览)
- 用WinSock控件编写网络聊天器 (2638次浏览)
- C++Builder注册表编程实例详解 (1568次浏览)
- C++ Builder VCL库函数简介 (1348次浏览)
- 在 C++ Builder中利用串行通信控件编程 (1213次浏览)
- C++ Builder中消息处理过程及应用 (1038次浏览)
- 将指定目录的结构装入TreeView中 (990次浏览)
- 用C++ Builder3 制作记事本 (818次浏览)
- Windows多线程间同步事件的控制方法 (787次浏览)
- C++Builder开发Web应用程序 (746次浏览)



