问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++函数的异常处理,函数体怎么没有关键字throw?它是如何捕获异常的?

发布网友 发布时间:2022-10-08 20:14

我来回答

1个回答

热心网友 时间:2023-11-17 18:49


throw

【抛出异常】(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:
throw 表达式;
    如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要。


【范例】处理除数为0的异常。该范例将上述除数为0的异常可以用try/catch语句来捕获异常,并使用throw语句来抛出异常,从而实现异常处理,实现代码如代码清单20-2所示。
代码清单20-2

  #include<iostream.h>                                 //包含头文件
    #include<stdlib.h>
    double fuc(double x, double y)                        //定义函数
    {
        if(y==0)
        {
            throw y;                                    //除数为0,抛出异常
        }
       return x/y;                                    //否则返回两个数的商
    }
    void main()
    {
        double res;
        try                                            //定义异常
        {
            res=fuc(2,3);
            cout<<"The result of x/y is : "<<res<<endl;
            res=fuc(4,0);                                //出现异常
        }
        catch(double)                                    //捕获并处理异常
        {
           cerr<<"error of dividing zero.\n";
            exit(1);                                    //异常退出程序
        }
    }


【运行结果】在Visual C++中新建一个【C++ Source File】文件,输入上述的代码,编译无误后运行。
【范例解析】上述代码中,在主函数main()的第14~19行中使用了try语句定义异常,其中包含3条有可能出现异常的语句,它们为调用两个数相除的函数。在代码的第20~24行定义了异常处理,即捕获异常后执行该段代码中的语句。此外,在函数fuc()的代码5~8行通过throw语句抛出异常。




追问粘贴狗

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年9月走亲访友黄道吉日 2024年9月哪天适合走亲访友 2024年7月5日是走亲访友的黄道吉日吗 2024年7月5日适合走亲访友吗 交强险还需要交车船税吗 测评| 平安家易保(家财险):限商品房,自住版、房东版、租客版 女的23岁去读大学年龄是不是太大了? 请问中国石化怎么操作?23.00元买入的,能继续持有吗?中国石化的股改是怎... 600028我是21元买入的,现已经跌到15元多了,怎么办呀?赔死了!!_百度知 ... 请问600028中国石化现在还可以买吗? ...一个游戏机插在电视上耍的那种小游戏,超级玛丽,冒险岛等,你们还玩... 最难小游戏排行榜(十大最难玩的家庭小游戏) 教师编制跟教师资格证什么区别 《金秘书为什么那样》20年前发生了什么?小时候谁绑架的金秘书-趣历史网 es200卓越版和豪华版区别是什么? 吃茶油对身体有什么好处 吃茶油对身体有哪些功效 一般QQ聊天用的摄像头,多少像素的就够清楚了? 50g宽带一个月够不够用 一个月10g够用不? 上网包月10G流量够用吗 家庭网络10G够用吗? 电脑上网一个月10G流量够用吗 晚上八点前吃麻辣烫吃完怎么做才不长肉 晚餐吃麻辣烫会不会长肥 减肥期间晚上可以吃麻辣烫吗 我现在正在减肥,晚上麻辣烫当晚饭吃可以吗 含有长逝的成语 成语稍什么逝成语 带有逝字的成语 工贸行业重大风险判定标准 干冰是什么,是不是也象冰一样会冷,干冰怎么熔化,在那买?? 人什么病不能吃寒性食物 病牛表达了诗人怎样的志向 《病牛寄托了作者怎样的思想感情 李纲的《病牛》象征什么 诗人以&#39;&#39;病牛&#39;&#39;自喻,抒发了怎样的思想感情 宋朝李钢的病牛表达了作者什么样的理想 病牛诗人借什么不辞劳苦无私奉献的形象 无氟空调好吗 无氟空调制冷原理 冬天空调无氟会怎么样 列举战国的三例战争及典故 副卡申请不了 副卡申请不了 想问手机副卡怎么开通微信 副卡怎么注册?付卡注册验证码接不到 拼多多上买了东西不想要了怎么办 石榴石的鉴别方法 石榴石如何鉴别 石榴石怎么鉴别 辨别石榴石的小妙招 如何鉴别石榴石 新手机号怎么注册微信和设置? 一般人会把电话号码设置成 如何将手机号设置成?