zoukankan      html  css  js  c++  java
  • MFC异常与C++标准异常

    MFC较好地将异常封装到CException类及其派生类中,自成体系,下表给出了MFC 提供的预定义异常:

    异常类                                                        含义
    CMemoryException                                    内存不足
    CFileException                                          文件异常
    CArchiveException                                    存档/序列化异常
    CNotSupportedException                          响应对不支持服务的请求
    CResourceException                                Windows 资源分配异常
    CDaoException                                         数据库异常(DAO 类)
    CDBException                                           数据库异常(ODBC 类)
    COleException                                          OLE 异常
    COleDispatchException                            调度(自动化)异常
    CUserException                                        用消息框警告用户然后引发一般 CException 的异常

     

    标准库异常类
       C++标准库异常类定义在四个头文件中:
       1) <exception>头文件中定义了异常类exception;
       2) <stdexcept>头文件中定义了几种常见的异常类。
       3) <new>头文件中定义了bad-alloc异常类。当new无法分配内存时将抛出该异常类对象。
       4) <type_info>头文件中定义了bad_cast异常类。当dynamic_cast失败时将抛出该异常类对象。

       标准异常类之间的关系:exception派生出runtime_error类、logic_error类、bad_cast类和bad_alloc类。由runtime_error派生出range_error、overflow_error、underflow_error;由logic_error派生出domain_error、invalid_argument、length_error、out_of_range。

     

    标准异常类的详细列表

     exception
     最常见的问题
     runtime_error
     运行时错误:仅在运行时才能检测到的问题
     range_error
     运行时错误:生成的结果超出了有意义的值域范围
     overflow_error
     运行时错误:计算上溢
     underflow_error
     运行时错误:计算下溢
     logic_error
     逻辑错误:可在运行前检测到的问题
     domain_error
     逻辑错误:域错误
     invalid_argument
     逻辑错误:无效参数
     length_error
     逻辑错误:试图生成一个超出该类型最大长度的对象
     out_of_range
     逻辑错误:使用一个超出有效范围的值


    注:运行时错误是指在某语句计算过程中产生的错误,逻辑错误是指在某语句执行前检查到的错误。
     
       exception、bad_alloc、bad_cast类型只定义了默认构造函数,而其它类型则只定义了一个使用string作为参数的构造函数。基类exception提供了一个what()成员函数,其返回const char*类型的C风格字符串。对于以string初始化的异常类,what()将返回该string对应的C风格字符串;否则返回的值是未定义的。
    标准异常都派生自一个公共的基类exception。下面是exception类的原型:
    class exception
    {
    public:
        exception() throw();
        exception(const exception& rhs) throw();
        exception& operator=(const exception& rhs) throw();
        virtual ~exception() throw();
        virtual const char *what() const throw();
    };
  • 相关阅读:
    01月04日假期学习
    个人加分项
    12月16日总结
    12月15日总结
    12月13日总结
    01月01日假期学习
    01月02日假期学习
    12月14日总结
    12月17日总结
    01月05日假期学习
  • 原文地址:https://www.cnblogs.com/mlog/p/2456375.html
Copyright © 2011-2022 走看看