异常处理
在程序执行的过程中,可能会发生一些称为“异常”的非正常状态或者错误。这些异常可能包括内存耗尽,资源分配错误或是找不到文件等。
微软基础类库中采用的异常处理模式和ANSI标准化委员会建议的C++异常处理方式很接近。异常处理函数必须在调用可能发生不正常状态的函数之前建立。如果这个函数遇到了不正常的状态,它就抛出一个异常,并且将控制权转移给异常处理函数。
微软基础类库中包含的某些宏可以建立异常处理函数。另有一些全局函数有助于抛出异常并在必要时终止程序。这些宏和全局函数可以分为以下几类:
·异常宏,生成异常处理函数的结构。
·异常抛出函数,生成特定类型的异常。
·终止函数,使程序终止。
如果需要示例和更多的细节,请参阅《Visual C++程序员指南》中的“异常”部分。

异常宏
TRY声明一段代码为异常处理
CATCH声明一段代码,用于捕捉前面的TRY块产生的一个异常
CATCH_ALL声明一段代码,用于捕捉前面的TRY块产生的所有异常
AND_CATCH声明一段代码,用于捕捉前面的TRY块产生的其他类型的异常
AND_CATCH_ALL声明一段代码,用于捕捉前面的TRY块抛出的所有其他类型的异常
END_CATCH结束上一个CATCH或AND_CATCH块
END_CATCH_ALL结束上一个CATCH_ALL代码块
THROW抛出一个指定的异常
THROW_LAST抛出当前处理的异常,交给后面的处理函数

异常抛出函数
AfxThrowArchiveException抛出一个档案异常
AfxThrowFileException抛出一个文件异常
AfxThrowMemoryException抛出一个内存异常
AfxThrowNotSupportedException抛出一个不支持的异常
AfxThrowResourceException抛出一个Windows的未找到资源异常
AfxThrowUserException在用户初始化的程序动作中抛出一个异常

MFC特别为OLE异常提供了两个异常抛出函数。

OLE异常函数
AfxThrowOleDispatchException在OLE自动化函数内抛出一个异常
AfxThrowOleException抛出一个OLE异常

为了支持数据库异常,数据库类提供了两个异常类,CDBException和CDaoException,还有一些全局函数用于支持异常类型:

DAO异常函数
AfxThrowDAOException从你自己的代码中抛出一个CDaoException异常
AfxThrowDBException从你自己的代码中抛出一个CDBException异常

MFC提供了下列终止函数:
终止函数
AfxAbort当发生了致命错误时用于结束应用程序

请参阅:CException