异常处理在MFC

本文说明异常处理机制可在 MFC。 两个结构可用:

  • C++ 异常, MFC 3.0 版和更高版本

  • MFC 异常宏, MFC 1.0 版和更高版本

使用 MFC,如果要编写新应用程序,应使用 C++ 结构。 可以使用基于宏的结构,如果您的现有的应用程序中使用该结构广泛。

可以轻松地将现有代码以使用 C++ 异常而不是 MFC 异常宏。 将您的代码和准则的优点采用在文章 异常:将MFC异常宏所述。

使用 MFC 异常宏,如果您已经开发应用程序,则可以继续使用这些宏在现有代码,那么,当使用 C++ 异常在新代码时。 这篇文章 异常:对于异常宏的更改在3.0版中 为具体的准则。

备注

若要启用 C++ 异常处理在代码中,选择使代码生成页的 C++ 异常在项目的 属性页 (C++) 对话框的 C/C++ 文件夹或使用 /GX 编译器选项。默认值为 /GX ),禁用异常处理。

本文包含以下主题:

  • 何时使用异常

  • MFC 支持异常

  • 有关异常的其他阅读材料

何时使用异常

,当函数在程序执行时,调用结果三个类别可能发生:常规执行、不正确执行或异常执行。 每个类别下述。

  • 常规执行

    函数可能会执行并返回。 某些函数返回结果代码向调用方,指示函数的结果。 可能的结果代码的功能严格定义并表示函数的可能结果的范围。 结果代码指示成功或失败或甚至可能指示在预期中正常大小失败的特定类型。 例如,文件状态函数可以返回指示的代码文件不存在。 注意不使用术语 “错误代码”,因为结果代码表示许多预期结果之一。

  • 不正确执行

    调用方在不适当的上下文出现在传递实参的某个错误的函数或调用函数。 这种情况会导致错误,在项目开发过程,因此,应由断言检测到它。 (有关断言的更多信息,请参见 断言。)

  • 异常执行

    异常执行包括在程序控件外的条件,例如内存不足或 I/O 错误,影响函数的结果的情况。 应由捕获并引发的异常处理异常情况。

使用异常的异常执行尤为合适。

MFC 支持异常

您是否直接使用 C++ 异常或使用 MFC 异常宏,您将使用 CException 类CException- 会引发由框架或您的应用程序中派生的对象。

下表显示 MFC 提供的预定义的异常。

异常类

含义

CMemoryException 类

内存不足

CFileException 类

文件异常

CArchiveException 类

存档/序列化异常

CNotSupportedException 类

请求的响应不支持服务

CResourceException 类

windows 资源分配异常

CDaoException 类

数据库异常 (DAO 类)

CDBException 类

数据库异常 (ODBC 类)

COleException 类

OLE 异常

COleDispatchException 类

计划 (自动) 异常

CUserException 类

警报有消息框中向用户,然后引发一般 CException 类的异常

备注

MFC 支持 C++ 异常和 MFC 异常宏。MFC 不直接支持 Windows NT 结构化异常处理程序 (SEH),如 结构化异常处理所述。

有关异常的其他阅读材料

使用异常传递时, MFC 库下列文章声明:

下列文章 MFC 异常宏与 C++ 异常关键字的比较并演示如何将满足您的代码:

请参见

参考

C++异常处理

其他资源

如何:我创建 " 我的自定义异常类?