zoukankan      html  css  js  c++  java
  • C++异常处理机制

    为了不让程序由于错误而中断,C++提供了异常处理机制。

    简单的说,异常的抛出与捕捉的步骤如下:

    (1)在底层函数throw异常对象;

    (2)将可能抛出异常的程序段嵌在try块之中;

      (3)  紧随try块的catch块分别对不同类型的异常对象作出处理;

    (4)如果匹配的处理器未找到,则运行函数terminate将被自动调用,其缺省功能是调用abort终止程序;

    (5)处理不了的异常,可以在catch的最后一个分支,使用throw语法,向上扔。

    异常对象是类对象时,用于接收异常对象有三种形式:

    (1)catch(A  a)

    (2)catch(A& a)

    (3)catch(A* a)

    第一种是直接以对象 a接收,a其实是通过A类的拷贝构造函数将异常抛出的对象复制给了它,所以系统会有两次构造和析构函数的调用

    第二种是以引用对象a接收,那么a不会被重新构造,而是和异常抛出的对象共同表示同一块内存,所以系统只有一次构造和析构函数的调用

    第二种是以指针对象a接收,虽然a与异常抛出的对象共同指向同一块内存,但是析构内存后,还需要手动释放指针变量,即delete a。

    所以,在异常对象是类对象时,catch的形参要用引用来接收,这样既方便又不容易出错。

     
  • 相关阅读:
    配置 L3 agent
    Why Namespace?
    虚拟 ​router 原理分析
    创建 router 连通 subnet
    用 config drive 配置网络
    cloud
    写在最前面
    使用apktool工具遇到could not decode arsc file的解决办法
    php-fpm优化
    解决官网下载jdk只有5k大小的错误
  • 原文地址:https://www.cnblogs.com/lyjbk/p/13182490.html
Copyright © 2011-2022 走看看