异常处理

在程序执行时,称为“异常”大量异常状况和错误可以发生。 这些可包括内存不足、资源分配错误和查找文件失败。

Microsoft 基础类库使用严格在 C++ 的 ANSI 标准委员会的建议版本之后建模的异常处理方案。 异常处理程序必须在调用可能遇到一种异常情况的函数之前设置。 如果函数遇到异常状况,会引发异常,而控件传递给异常处理程序。

Microsoft 基础类库中包含的一些类将建立异常处理程序。 其他一些全局函数帮助引发特定的异常并终止程序,如有必要。 这些宏和全局函数分为以下几个类别:

  • 异常宏,结构化异常处理程序。

  • 异常抛出函数,生成特定类型的异常。

  • 函数终止,导致程序终止。

有关示例和更多详细信息,请参见 异常文章。

异常宏

TRY

指定异常处理的代码块。

CATCH

指定代码块捕捉来自上述 TRY 块的异常。

CATCH_ALL

指定代码块捕捉来自上述 TRY 块的所有异常。

AND_CATCH

指定代码块捕捉来自上述 TRY 块的额外的异常类型。

AND_CATCH_ALL

指定代码块用于捕捉前面的 TRY 块引发的其他额外的异常类型。

END_CATCH

关闭一 CATCHAND_CATCH 的代码块。

END_CATCH_ALL

关闭最后CATCH_ALL 代码块。

THROW

引发特定的异常。

THROW_LAST

抛出当前处理的异常给下一个外部处理程序。

异常抛出函数

AfxThrowArchiveException

抛出存档异常。

AfxThrowFileException

抛出文件异常。

AfxThrowMemoryException

抛出内存异常。

AfxThrowNotSupportedException

抛出不受支持异常

AfxThrowResourceException

抛出窗口查找不到资源的异常。

AfxThrowUserException

在用户启动程序操作中抛出异常。

MFC 专门为 OLE 异常提供两个异常抛出函数:

OLE 异常函数

AfxThrowOleDispatchException

在 OLE 自动化的函数内抛出异常。

AfxThrowOleException

抛出一个OLE异常。

为了支持数据库异常,数据库类提供两个异常类、CDBExceptionCDaoException全局函数支持异常类型:

DAO 异常函数

AfxThrowDAOException

从自己的代码中抛出CDao异常

AfxThrowDBException

从自己的代码中抛出CDBE异常

MFC 提供下列终止函数:

终止函数

AfxAbort

当发生错误时调用终止应用程序。

请参见

参考

CException 类

概念

MFC 宏和全局函数