<sub id="miph7"></sub>
<table id="miph7"></table>

        1. c++异常处理的方法

          分享图片 

          c++异常处理

          程序运行时常会碰到一些异常情况,例如:做除法的时候除数为 0;用户输入年龄时输入了一个负数;用 new 运算符动态分配空间时,空间不够导致无法分配;访问数组元素时,下标越界;打开文件读取时,文件不存在等等。

          这些异常情况,如果不能发现并加以处理,很可能会导致程序崩溃。

          所谓“处理”,可以是给出错误提示信息,然后让程序沿一条不会出错的路径继续执行;也可能是不得不结束程序,但在结束前做一些必要的工作,如将内存中的数据写入文件、关闭打开的文件、释放动态分配的内存空间等。

          C++ 引入了异常处理机制。其基本思想是:函数 A 在执行过程中发现异常时可以不加处理,而只是“拋出一个异常”给 A 的调用者,假定为函数 B。

          拋出异常而不加处理会导致函数 A 立即中止,在这种情况下,函数 B 可以选择捕获 A 拋出的异常进行处理,也可以选择置之不理。如果置之不理,这个异常就会被拋给 B 的调用者,以此类推。

          如果一层层的函数都不处理异常,异常最终会被拋给最外层的 main 函数。main 函数应该处理异常。如果main函数也不处理异常,那么程序就会立即异常地中止。

          C++异常处理基本语法

          C++ 通过 throw 语句和 try...catch 语句实现对异常的处理。throw 语句的语法如下:

           分享图片 

          该语句拋出一个异常。异常是一个表达式,其值的类型可以是基本类型,也可以是类。

           分享图片 

          catch 可以有多个,但至少要有一个。

          不妨把 try 和其后{}中的内容称作“try块”,把 catch 和其后{}中的内容称作“catch块”

          try...catch 语句的执行过程是:执行 try 块中的语句,如果执行的过程中没有异常拋出,那么执行完后就执行最后一个 catch 块后面的语句,所有 catch 块中的语句都不会被执行;如果 try 块执行的过程中拋出了异常,那么拋出异常后立即跳转到第一个“异常类型”和拋出的异常类型匹配的 catch 块中执行(称作异常被该 catch 块“捕获”),执行完后再跳转到最后一个 catch 块后面继续执行。

          例如下面的程序:

           分享图片

           程序的运行结果如下:

           分享图片

           

          说明当 n 不为 0 时,try 块中不会拋出异常。因此程序在 try 块正常执行完后,越过所有的 catch 块继续执行,catch 块一个也不会执行。

          程序的运行结果也可能如下:

           分享图片

           

          当 n 为 0 时,try 块中会拋出一个整型异常。拋出异常后,try 块立即停止执行。该整型异常会被类型匹配的第一个 catch 块捕获,即进入catch(int e)块执行,该 catch 块执行完毕后,程序继续往后执行,直到正常结束。

          如果拋出的异常没有被 catch 块捕获,例如,将catch(int e),改为catch(char e),当输入的 n 为 0 时,拋出的整型异常就没有 catch 块能捕获,这个异常也就得不到处理,那么程序就会立即中止,try...catch 后面的内容都不会被执行。

          以上就是c++异常处理的方法的详细内容

          相关文章
          相关标签/搜索
          二四六天天好彩免费资枓大全 松潘县| 古丈县| 江陵县| 广平县| 铜山县| 兰坪| 湘西| 花莲县| 涞源县| 宜黄县| 静海县| 东安县| 北流市| 阿坝| 兰西县| 铜山县| 孝义市| 鞍山市| 武强县| 白沙| 政和县| 沁源县| 仪陇县| 淮北市| 呼图壁县| 盐边县| 闸北区| 阳山县| 西吉县| 苗栗市| 哈密市| 冷水江市| 沧州市| 宾川县| 休宁县| 夹江县| 湾仔区| 长乐市| 汽车| 阿拉善盟| 九龙县| 澜沧| 田阳县| 湖北省| 崇信县| 镇宁| 龙游县| 太谷县| 陕西省| 新蔡县| 乌海市| 松潘县| 德令哈市| 大同县| 正蓝旗| 太原市| 扎鲁特旗| 双城市| 江源县| 大同市| 乡城县| 丹东市| 肥城市| 库尔勒市| 卓尼县| 鄂温| 凌源市| 尚志市| 郯城县| 西平县| 石楼县| 琼结县| 汝南县| 安达市| 巴马| 旌德县| 彰化县| 乐平市| 白河县| 德清县| 札达县| 米泉市| 河东区| 迭部县| 五家渠市| 固镇县| 古交市| 南木林县| 水富县| 沾化县| 盐城市| 江达县| 明光市| 宾阳县| 凯里市| 清镇市| 云龙县| 息烽县| 甘肃省| 青龙| 牟定县| 惠水县| 来安县| 南漳县| 鄱阳县| 拜城县| 温州市| 通城县| 华阴市| 石屏县| 沿河| 离岛区| 民和| 建平县| 马山县| 沈丘县| 乌审旗| 彩票| 广汉市| 文水县| 罗平县| 临沭县| 桓台县| 曲靖市| 西和县| 镇康县| 大理市| 新闻| 班戈县| 涡阳县| 瑞金市| 阜新市| 台湾省| 阳朔县| 清河县| 祁阳县| 台东县| 平潭县| 巴中市| 个旧市| 苗栗县| 财经| 青龙| 县级市| 自贡市| 宝丰县| 电白县| 东丰县| 阿克陶县| 吉首市| 平泉县| 清丰县| 乌拉特后旗| 双牌县| 延长县| 丹凤县| 安龙县| 年辖:市辖区| 樟树市| 乐安县| 侯马市| 墨脱县| 盐亭县| 舟山市| 灵山县| 大安市| 常德市| 慈溪市| 双桥区| 宣汉县| 县级市| 尚志市| 青神县| 凤冈县| 女性| 保定市| 清涧县| 大悟县| 五家渠市| 揭西县| 交口县| 合江县| 石嘴山市| 中江县| 双峰县| 遵义市| 清徐县| 崇信县| 柯坪县| 松潘县| 喀喇| 桦甸市| 桓仁| 白河县| 浮梁县| 商洛市| 高阳县| 和龙市| 两当县| 柘荣县| 双柏县| 陵水| 龙岩市| 凭祥市| 吉水县| 芜湖市| 忻城县| 贡山| 九江县| 景德镇市| 永春县| 无为县| 图片| 玉溪市| 崇左市| 衡水市| 雷山县| 达尔| 当雄县| 安平县| 静海县| 新巴尔虎右旗| 登封市| 新乡县| 永兴县| 安宁市| 宁蒗| 同心县| 桑日县| 桐城市| 闻喜县| 廊坊市| 安福县| 广南县| 怀柔区| 瑞金市| 筠连县| 临洮县| 阜平县| 桃园市| 乌鲁木齐市| 武强县| 依安县| 鄂尔多斯市| 寿宁县| 内乡县| 肇州县| 富平县| 嵊州市| 合山市| 西峡县| 克拉玛依市| 格尔木市| 马关县| 山西省| 萝北县| 涿鹿县| 马鞍山市| 望城县| 九寨沟县| 汉寿县| 久治县| 台南县| 毕节市| 西吉县| 嘉善县| 中卫市| 珠海市| 台南市| 昆山市| 大英县| 阜新| 阿克苏市| 德江县| 拉萨市| 年辖:市辖区| 宜宾市| 济源市| 鄂托克前旗| 宁化县| 余江县| 时尚| 阿勒泰市| 雷波县| 潼关县| 宝坻区| 阳江市| 贵港市| 镇康县| 彭州市| 桃园市| 德安县| 闽清县| 阜城县| 玉屏| 泗阳县| 锡林浩特市| 红桥区| 石首市| 永清县| 云梦县| 通海县| 都安| 江永县| 贵定县| 大城县| 高唐县| 汉川市| 黄浦区| 无极县| 积石山| 东平县| 都安| 乐亭县| 武汉市| 张掖市| 东乡县| 公安县| 武城县| 丽江市| 横山县| 贡觉县| 航空| 广东省| 宜春市| 衡阳市| 焦作市| 马鞍山市| 玛多县| 临泉县| 大埔区| 蕲春县| 普定县| 广平县| 寻乌县| 上饶市| 龙南县| 海原县| 秦皇岛市| 莎车县| 尚义县| 伊春市| 沙河市| 桓仁| 和林格尔县| 静海县| 拜城县| 济源市| 托里县| 罗源县| 安多县| 富阳市| 惠水县| 库车县| 镶黄旗| 谷城县| 莲花县| 潮安县| 屏山县| 衡山县| 建宁县| 政和县| 藁城市| 南江县| 安福县| 宽甸| 武川县| 行唐县| 凤凰县| 丰台区| 乐山市| 葵青区| 闵行区| 修文县| 庆阳市| 玉树县| 马边| 始兴县| 吉安市| 东海县| 凤翔县| 自贡市| 抚远县| 长白| 芜湖县| 收藏| 南汇区| 宜宾市| 英吉沙县| 延庆县| 博兴县| 望谟县| 石屏县| 马龙县| 彭阳县| 读书| 中山市| 石狮市| 邳州市| 白沙| 政和县| 勃利县| 梨树县| 永川市| 安义县| 岗巴县| 怀宁县| 汶川县| 二手房| 光泽县| 英山县| 宝兴县| 达日县| 金昌市| 克拉玛依市| 砀山县| 文水县| 民和| 淮安市| 台湾省| 屯昌县| 桑植县| 杭锦后旗| 淮阳县| 湾仔区| 镶黄旗| 剑阁县| 抚松县| 南平市| 平江县| 师宗县| 罗甸县| 泾源县| 甘孜| 石棉县| 西林县| 衡东县| 香港| 鄯善县| 龙陵县| 建阳市| 贡嘎县| 弋阳县| 吴忠市| 和林格尔县| 出国| 博客| 仁布县| 阳曲县| 桦南县| 平度市| 兴义市| 禄丰县| 大邑县| 钟山县| 宿州市| 将乐县| 武威市| 宾阳县| 德安县| 深水埗区| 兰溪市| 双柏县| 扎兰屯市| 井冈山市| 屯昌县| 东丽区| 桐乡市| 芦溪县| 那坡县| 平顶山市| 石渠县| 江安县| 娄底市| 苍山县| 大同市| 合阳县| 南昌市| 浪卡子县| 镇赉县| 仁布县| 阿鲁科尔沁旗| 奎屯市| 唐河县| 山丹县| 左权县| 嘉鱼县| 涪陵区| 丰都县| 安塞县| 独山县| 康定县| 昂仁县| 洛扎县| 襄汾县| 辽阳市| 额尔古纳市| 孟连| 衢州市| 乌苏市| 茂名市| 吉木乃县| 新野县| 卓尼县| 巍山| 苏尼特右旗| 长顺县| 自治县| 儋州市| 获嘉县| http://www.jp1860taxo.fun http://www.jp1860packo.fun http://wap.jp1860fantasyo.fun http://3g.jp1860zodifyo.fun http://3g.jp1860projecto.fun http://bbs.jp1860beato.fun http://bbs.jp1860budgeto.fun http://bbs.jp1860participateo.fun http://jp1860gaino.fun http://wap.jp1860secureo.fun http://3g.jp1860zapo.fun http://3g.jp1860boato.fun http://wap.jp1860rocko.fun http://wap.jp1860pleaseo.fun http://wap.jp1860instanceo.fun