C++“异常处理”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013054770/article/details/43794937
异常的概念
一、语法错误
    在编写程序是,程序中的关键字拼写错、标识符未定义、控制结构不完整、程序语句不合乎编译器的语法规则等,这种错误在编译、连接是由表编译器指出。

二、逻辑错误
    由于编程者对问题的理解不够造成算法设计有误,导致程序虽然能顺利运行,但是没有得到预期的结构,这类错误通过调试与测试发现。

三、运行错误
    程序在运行的过程中由于意外的结果,运行环境问题造成程序异常种植,如内存空间不足、打开文件不存在、文件读写不成功、执行了除0操作等。


C++异常处理机制
一、异常处理
    C++的异常处理引入了三个关键字try(检测异常)、throw(抛出异常)、catch(捕获异常),利用这种结构化的形式来描述异常处理过程。

二、各异常处理作用
    1、try负责监视可能出现异常的程序段,当程序运行中出现异常时,他会检测出这个异常,程序将不能再沿着正常的程序逻辑路径前进。
    2、throw负责抛出异常,并将程序控制权交给catch子句。
    3、catch负责捕获异常,并对不同的异常进行相应的处理。

三、各语句块格式
    1、try函数:语句块中的程序语句执行是产生的异常,然后抛出异常。
            try
            {
                //程序执行语句序列
            }
    
    2、throw函数:在发生异常时抛出产生异常对象。
            throw(异常类型表达式);

    3、catch函数:语句块用于铺货匹配throw抛出的异常对象,然后进行处理。
            catch(异常类型)
            {
                //异常处理语句序列
            }

四、异常处理的执行过程
    1、执行try块中的程序语句序列;
    2、执行期间没有执行到throw()(没有引起异常),则跳过异常处理区的catch语句块,程序向下执行;
    3、若执行期间引起异常,则执行throw()语句抛出异常,进入异常处理区,将throw()抛出的异常类型表达式(对象)依次与catch()中的类型匹配,获得匹配的catch子句将捕获并处理异常,继续执行异常处理区域后的语句;
    4、如果未找到匹配的异常处理子句(异常未捕获到),程序自动调用结束函数terminate()(函数terminate将通知用户且系统终止程序的运行)。即使不能处理某种异常,也应该编写代码来捕获这个异常,并在退出之前输出一条合适的错误消息。
    在函数中抛出异常使程序保持良好的结构,嵌套调用的函数内层抛出的异常从内层逐层向外传递。传递的异常被捕获,函数开始退栈过程。
    

猜你喜欢

转载自blog.csdn.net/u013054770/article/details/43794937