工欲善其事,必先利其器。在做一个项目时必定要先做好调试除错的预备在面向过程编程的时代都是以检测返回的错误代码来判定错误,可是这种方法的缺点是假如编写某一操作的时候可能出现的错误代码(比如说硬件操作)太多,那么最终用户将会陷入倒无穷无尽的检测代码中,可能会是这个样子
UINT err=Functionxx(…);
if(err==xxx)
…
if(err==xxx)
…
…
…
省略100行
只有这样程序才能在出现意外的时候有所相应和恢复,但是由于错误处理太庞大了最终用户很可能这样
if(Functionxx()!=SUCEEDED)
exit(0);
这样某些可能可以恢复的操作也无法幸免了,(比如说网络连接超时,终止运行太过分了吧,只要弹出个对话框就行了)
在面向对象编程的时候,不可否认,很多人仍然还是这样排错的,其实各种面向对象的语言都提供了异常处理的手段(比如说Object Pascal,C++,本文以C++为例)
下面是我的关于异常的一些使专心得
对于各种用户来说,并不是每一种错误都是他关心的,非凡是小组开发的时候比如某一模块是关于文件操作的,那么编写这个模块的程序员只要注重关于文件操作失败的异常就行了,而网络模块的程序员只要知道网络出错的错误处理就行了,因此,我们可以定义一个这样的类
class CBasicException
{
CBasicException(…);
char* GetDescription();
UINT GetErrorCode();
…
};
然后再从这个类继续几个子类
CFileException,CNetException…
然后和具体某一类错误相关的具体的异常分别从上面的类里面继续,比如文件打开失败,空间不够等等 可以从CFileException继续,而连接超时等等可以从CNetException继续,如此一来就将错误分类了整个类层次是这样的
CBasicException
/ \
CFileException CNetException
/ \ / \
COpenFailed … CTimeOut … 进入讨论组讨论。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |