zoukankan      html  css  js  c++  java
  • (一)C++异常杂谈之初识异常对象

    关于C++异常对象的几点理解

    1、什么可以作为异常对象?

    异常对象并不像我之前想象的那么复杂,反之,C++异常对象时非常简单的。异常对象可以分为以下几类
    (1)C++的内置类型对象可以作为异常对象。比如:int、double
    (2)C++的标准库中定义的异常对象(类类型)

    标准异常类 描述 头文件
    exception 最通用的异常类,只报告异常的发生而不提供任何额外的信息 exception
    runtime_error 只有在运行时才能检测出的错误 stdexcept
    rang_error 运行时错误:产生了超出有意义值域范围的结果 stdexcept
    overflow_error 运行时错误:计算上溢 stdexcept
    underflow_error 运行时错误:计算下溢 stdexcept
    logic_error 程序逻辑错误 stdexcept
    domain_error 逻辑错误:参数对应的结果值不存在 stdexcept
    invalid_argument 逻辑错误:无效参数 stdexcept
    length_error 逻辑错误:试图创建一个超出该类型最大长度的对象 stdexcept
    out_of_range 逻辑错误:使用一个超出有效范围的值 stdexcept
    bad_alloc 内存动态分配错误 new
    bad_cast dynamic_cast类型转换出错 type_info

    除了抛出用户自定义的类型外,C++标准库定义了一组类,用户报告标准库函数遇到的问题。这些标准库异常类只定义了几种运算,包括创建或拷贝异常类型对象,以及为异常类型的对象赋值。
    (3)自定义的类类型的对象

    2、异常对象的特殊之处

    存储比较特殊,它不存储在堆内存中,又不存储在栈内存中。在windows下它存储在线程块TIB中。

    3、类类型的异常对象的特点?

    其名称往往代表了异常的类型。

    4、异常对象如何存储到特殊的内存块中?

    操作系统会根据throw+表达式构成的throw语句,使用复制构造函数将一份该类型的数据存储在特殊内存中。

    5、异常对象的作用是什么?

    起到一个信息匹配的功能,即将存在特殊内存中的异常对象与对应的catch进行信息匹配,然后决定执行哪个catch的代码。

  • 相关阅读:
    [转]经典SQL语句大全
    【转】windows 7系统安装与配置Tomcat服务器环境
    [转]php连接postgresql
    win7(64位)php5.5-Apache2.4-环境安装
    [转]WIN7系统安装Apache 提示msvcr110.DLL
    【转】如何在CentOS/RHEL中安装基于Web的监控系统 linux-das
    CentOS6.5安全策略设置
    【转】Lua编程规范
    在python中的使用
    游标 cursor
  • 原文地址:https://www.cnblogs.com/lasnitch/p/12260191.html
Copyright © 2011-2022 走看看